最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【详解】python中的文件操作模式

Python crifan 4031浏览 0评论

待完成,最新更新: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中的文件操作模式

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
89 queries in 0.200 seconds, using 22.12MB memory