待完成,最新更新:2013-05-08
把之前的:
【详解】Python中的文件操作,readline读取单行,readlines读取全部行,文件打开模式
中的部分内容整理过来,再加上更多的解释。
关于文件的基本知识
关于文件的,比如
刚开始打开后,位置position为0
随着读写,对应的position就有对应的变化。
比如read了3个字节后,对应的文件内部的position就是3了。
然后再写入2个字符,那么此时position就是5了。
而如果此时想要读取之前写入的2个字符,那么先是要把文件位置position,移动回到原先你写入的2个字符的那个起始位置,然后才能操作
往回移动2个字符,一般操作的方式都是seek,加上对应的-2,就是表示往回移动。
然后再read,才能,向后读取到你所需要的,你刚刚写入的2个字符。
总之,和文件基本的操作主要有:
read
write
seek
等等。
文件操作的几种模式
只读,只写,读写,追加
模式mode | 含义 | 说明 |
r | 只读(不可写) | 如果未指定mode,则默认为此’r’模式 |
w | 只写 | 如果用’w’,会把原先已存在的文件中的内容擦除(清除/冲)掉 |
a | 附加/追加 | 写数据时,会自动添加到(已存)文件的末尾 |
r+ | 即可以读,也可以写 |
另外还有一种分类法,分为:
文本模式,二进制模式
对于,从文件中读取出来的内容,是看成字符呢,还是看成一个二进制的值,
如同的处理方法,就对应的如下两种不同的模式:
文本模式
二进制模式
Python中的文件操作模式
- Windows平台:
- 支持在mode后面添加’b’,表示以 二进制 模式打开文件;
- 所以对应的mode就有
- rb
- wb
- r+b
- Python在Windows中,是区分 二进制 和 文本 文件的。
- 当对文件进行数据读写时,行尾(end-of-line)符,会自动发生轻微的变化
- 此种变化,对于文本文件,是没问题的,但是对于 二进制 文件,则很明显,会改变(破坏)原有的数据,即,是有问题的。
- 所以,当你在用Python操作Windows下面的文件的时候,要自己很清楚自己操作的是什么类型的文件,即,是 文本text 还是 二进制binary 文件
- Unix平台:
- 对于’b’,是不影响的
- 换句话说:如果你是用Python操作 二进制文件,则可以通过 加上’b’,得以实现,平台相关的效果,即 既适用于Windows平台,也适用于Unix类的平台。
对于是文本模式还是二进制模式,如果设置的不正确,就会导致各种可能的问题,比如:
【已解决】Python中通过csv的writerow输出的内容有多余的空行
转载请注明:在路上 » 【详解】python中的文件操作模式