python2.7 open函数_编译python 2.7.9详解Python中open()函数指定文件打开方式的用法

本文详细介绍了Python 2.7中open()函数的不同打开模式,如'r'、'w'、'a'、'b'和'+'。'w+'与'r+'的区别在于前者会清空文件,而后者不会。还讨论了二进制模式与文本模式处理换行符的差异,以及在不同操作系统下文件换行的兼容问题。
摘要由CSDN通过智能技术生成

当我们用open()函数去打开文件的时候,有好几种打开的模式。

'r'->只读

'w'->只写,文件已存在则清空,不存在则创建。

'a'->追加,写到文件末尾

'b'->二进制模式,比如打开图像、音频、word文件。

'+'->更新(可读可写)

这个带'+'号的有点难以理解,上代码感受下。with open('foo.txt', 'w+') as f:

f.write('barn')

f.seek(0)

data = f.read()

可以看到,上面这段代码,它不但可以写,还可以读出来。注意要先定位到开头,f.seek(0),不然读出来的是空数据。

一些人可能会有迷惑,既然带'+'号是可读可写,那'w+'跟'r+'有什么不同。

那就是,

'w+'会清空,会创建 (文件已存在则清空,不存在则创建。)

'r+'不清空,不创建

不要用二进制模式打开文本文件

先看下面代码的“诡异”现象。

假设在windows下,我有个f.txt文件,里面的内容是下面这样的。

hello

world

代码一,with open('f.txt', 'r') as f:

print f.readlines()

with open('f.txt', 'rb') as f:

print f.readlines()

输出

['hellon', 'worldn']

['hellorn', 'worldrn']

代码二,with open('f.txt', 'rb') as f:

data = f.read()

with open('f.txt', 'w') as f:

f.write(data)

打开文件,变成了下面这样,

www.002pc.com从编译python 2.7.9详解Python中open()函数指定文件打开方式的用法分析来看,对编译python 2.7.9详解Python中open()函数指定文件打开方式的用法的结果。

hello^M

world^M

首先,先理解换行符'n'跟回车符'r'的概念。

'n',换行符(LF,Line-Feed ),指新的一行。

'r',回车符(CR,Carriage-Return),指回到行头。

因为在不同系统下的换行标识是不一样的。

windows->'rn'

unix->'n'

mac->'r'

这就是为什么windows下的txt在linux打开的时候行尾会有'^M'。

这就是为什么我在linux下跑脚本导出游戏数据下到本地windows打开变成了一行。

其实文本文件也是二进制文件,是文本编码的二进制文件,文本文件对一些不可见字符进行了处理,增加可读性。

在python中,可以通过os.linesep获得当前系统的换行标识。比如在windows下,os.linesep是'rn'。

在python中操作换行标识的时候,并不用管是在什么平台下,直接用'n'就行了,python会自动根据不同系统转成不同标识。

有了上面这些理论依据,就可以解析本文开头代码的“诡异”现象了。

代码一中,用文本模式打开的文件,换行标识会被python处理成'n',而用二进制模式打开则原封不动。

代码二中,用二进制模式打开,用文本模式写入。二进制打开原封不动还是'rn',而文本模式写入的时候因为python会把'n'转成'rn',所以其实就等于是写入了'rrn',于是就多了个'^M'。

更多:编译python 2.7.9详解Python中open()函数指定文件打开方式的用法

https://www.002pc.comhttps://www.002pc.com/python/2542.html

你可能感兴趣的Python,open,打开方式,详解,用法,函数

No alive nodes found in your cluster

0踩

0 赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值