文件打开方式
当我们用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()
www.002pc.com认为此文章对《详解Python中open()函数指定文件打开方式的用法》说的很在理,学习电脑网为你提供最佳的网站制作,学习电脑。
输出
['hellon', 'worldn']
['hellorn', 'worldrn']
代码二,
with open('f.txt', 'rb') as f:
data = f.read()
with open('f.txt', 'w') as f:
f.write(data)
打开文件,变成了下面这样,
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日期坐标详解Python中open()函数指定文件打开方式的用法
https://www.002pc.comhttps://www.002pc.com/python/378.html
你可能感兴趣的Python,open,打开方式,详解,用法,函数
linux用u盘装系统6.7linux系统在右键打开方式中添加vim的方法
直接在右键里选择其他程序时手动加入VIM不能用 ,这是因为设置VIM必须"Terminal=true",即在终端中打开才可以,/usr/share/applications 里为打开方式里有的程序
cxml phpPHP构造函数与析构函数用法示例
本文实例讲述了PHP构造函数与析构函数用法。分享给大家供大家参考,具体如下:
在实例化一个新对象时,构造方法和析构方法都会被自动调用,若有继承则会使用父类的对应方法。
析构
html的phpPHP中ini_set和ini_get函数的用法小结
电脑技术网从html的phpPHP中ini_set和ini_get函数的用法小结分析来看,对html的phpPHP中ini_set和ini_get函数的用法小结的结果。
php适合小程序的后台php的dl函数用法实例
本文实例讲述了php的dl函数用法。分享给大家供大家参考。
php编辑器noThinkphp getLastSql函数用法
如何判断一个更新操作是否成功:电脑技术002pc网对《php编辑器noThinkphp getLastSql函数用法》总结来说,为我们php开源很实用。
asp点击数asp(vbs)Rs.Open和Conn.Execute的详解和区别及&H0001的说明
Rs.Open SQL,Conn,A,B,Cwww.002pc.com对《asp点击数asp(vbs)Rs.Open和Conn.Execute的详解和区别及&H0001的说明》总结来说,为我们asp
0踩
赏
0 赞