python文件相关操作总结
2017-10-21 16:00
337 查看
文件打开方式
当我们用open()函数去打开文件的时候,有好几种打开的模式。
'r'->只读
'w'->只写,文件已存在则清空,不存在则创建。
'a'->追加,写到文件末尾
'b'->二进制模式,比如打开图像、音频、word文件。
'+'->更新(可读可写)
这个带'+'号的有点难以理解,上代码感受下。
?
可以看到,上面这段代码,它不但可以写,还可以读出来。注意要先定位到开头,f.seek(0),不然读出来的是空数据。
一些人可能会有迷惑,既然带'+'号是可读可写,那'w+'跟'r+'有什么不同。
那就是,
'w+'会清空,会创建 (文件已存在则清空,不存在则创建。)
'r+'不清空,不创建
不要用二进制模式打开文本文件
先看下面代码的“诡异”现象。
假设在windows下,我有个f.txt文件,里面的内容是下面这样的。
?
代码一,
?
输出
?
代码二,
?
打开文件,变成了下面这样,
?
首先,先理解换行符'\n'跟回车符'\r'的概念。
'\n',换行符(LF,Line-Feed ),指新的一行。
'\r',回车符(CR,Carriage-Return),指回到行头。
因为在不同系统下的换行标识是不一样的。
?
这就是为什么windows下的txt在linux打开的时候行尾会有'^M'。
这就是为什么我在linux下跑脚本导出游戏数据下到本地windows打开变成了一行。
其实文本文件也是二进制文件,是文本编码的二进制文件,文本文件对一些不可见字符进行了处理,增加可读性。
在python中,可以通过os.linesep获得当前系统的换行标识。比如在windows下,os.linesep是'\r\n'。
在python中操作换行标识的时候,并不用管是在什么平台下,直接用'\n'就行了,python会自动根据不同系统转成不同标识。
有了上面这些理论依据,就可以解析本文开头代码的“诡异”现象了。
代码一中,用文本模式打开的文件,换行标识会被python处理成'\n',而用二进制模式打开则原封不动。
代码二中,用二进制模式打开,用文本模式写入。二进制打开原封不动还是'\r\n',而文本模式写入的时候因为python会把'\n'转成'\r\n',所以其实就等于是写入了'\r\r\n',于是就多了个'^M'。
有一点需注意:用二进制方式打开就只能输入二进制也就是byte类型的数据,以普通方式打开写入的是str类型
文章转载自:http://www.jb51.net/article/85869.htm
内容添加:
os.listdir()查看文件夹内所有的文件,返回的是文件内文件名的列表
当我们用open()函数去打开文件的时候,有好几种打开的模式。
'r'->只读
'w'->只写,文件已存在则清空,不存在则创建。
'a'->追加,写到文件末尾
'b'->二进制模式,比如打开图像、音频、word文件。
'+'->更新(可读可写)
这个带'+'号的有点难以理解,上代码感受下。
?
一些人可能会有迷惑,既然带'+'号是可读可写,那'w+'跟'r+'有什么不同。
那就是,
'w+'会清空,会创建 (文件已存在则清空,不存在则创建。)
'r+'不清空,不创建
不要用二进制模式打开文本文件
先看下面代码的“诡异”现象。
假设在windows下,我有个f.txt文件,里面的内容是下面这样的。
?
?
?
?
?
'\n',换行符(LF,Line-Feed ),指新的一行。
'\r',回车符(CR,Carriage-Return),指回到行头。
因为在不同系统下的换行标识是不一样的。
?
这就是为什么我在linux下跑脚本导出游戏数据下到本地windows打开变成了一行。
其实文本文件也是二进制文件,是文本编码的二进制文件,文本文件对一些不可见字符进行了处理,增加可读性。
在python中,可以通过os.linesep获得当前系统的换行标识。比如在windows下,os.linesep是'\r\n'。
在python中操作换行标识的时候,并不用管是在什么平台下,直接用'\n'就行了,python会自动根据不同系统转成不同标识。
有了上面这些理论依据,就可以解析本文开头代码的“诡异”现象了。
代码一中,用文本模式打开的文件,换行标识会被python处理成'\n',而用二进制模式打开则原封不动。
代码二中,用二进制模式打开,用文本模式写入。二进制打开原封不动还是'\r\n',而文本模式写入的时候因为python会把'\n'转成'\r\n',所以其实就等于是写入了'\r\r\n',于是就多了个'^M'。
有一点需注意:用二进制方式打开就只能输入二进制也就是byte类型的数据,以普通方式打开写入的是str类型
文章转载自:http://www.jb51.net/article/85869.htm
内容添加:
os.listdir()查看文件夹内所有的文件,返回的是文件内文件名的列表
file_path = '..\\devide\\devide_result\\' filenames = os.listdir(file_path)
相关文章推荐
- python 文件操作相关函数用法总结
- python文件操作相关知识点总结整理
- python文件操作相关知识点总结整理
- 文件/字符串操作相关的python程序
- python 日期相关的各种操作总结
- python文件操作+字符串操作 总结(学习记录)
- 总结python对csv文件的操作
- python 日期相关的各种操作总结
- Python文件复制中如何复制相关文件的实际操作
- 基础知识(八)python文件操作相关函数
- python文件相关操作
- python 读取文件 并实现文件相关操作最后导出excel
- 关于文件流的阅读笔记(文件操作相关总结) [[ 应用过 ]]
- NodeJS操作文件相关总结
- python对文件的操作方式总结
- Python常用文件操作总结
- python操作目录、文件相关的函数
- python 文件操作总结
- python 文件读写查找、替换相关简单操作
- 【总结】Python 文件操作