文件读写的一些坑

来源:互联网 发布:龙虎榜数据怎么来的 编辑:程序博客网 时间:2024/05/21 18:29

文件读写很重要,但是open()里面的参数很多,书上写的太差了  百度了下才知道真正的区别

r 打开并只读文件,该文件必须存在。
r+ 打开并且可读可写文件,该文件必须存在。
w 打开并只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

这几个参数加上b就变成针对二进制文件的参数,其他都是一样的,所以如果文件存在了,那么就用r,不存在就用w的,文件追加用a,现实中建议判断下该路径下有没有这个文件夹,记得sys库里是有这个函数的。如果自己做点软件什么的,就先建好放一个空的在里面,到时候全部统一用r+,省的节外生枝。


另外有一个很重要的点,在文件读写的时候,我们要把每个字符当成一个盒子,使用r+的时候,会直接默认在第一个格子里自己替换掉原来的字符,比如我写了a0a0a0a0a0,如果我r+输入b1就会变成b1a0a0a0a0,还有,如果输入中文字,会占用两个字符格子。如输入一个 “湖”字  ,就会变成   湖a0a0a0a0。而且转义字符\n也和中文一样占两格。但是,诡异的是读取的时候中文和英文还有标点符号全部一视同仁。。。。都算1个