foxdai 发表于 2020-4-18 22:19:59

L28 文件打开基础操作 理解

本帖最后由 foxdai 于 2020-4-20 16:51 编辑

0. 注意文件内容为中文和西文的字符同时存在时,如果读取则出错、写入为乱码;文件指针不是在划分中文字符的中间,命令不会出错;
1. 'r',只读,注意中文+西文混合的情况,读取不正确的话会出错;

2.'w',写入 ('x'可写,存在即出错,不存在即创建)
(1)在打开文件时,如果文件存在,则原文件内容就会被删除;用f.close()后,缓存内容才会被写入文件保存;
(2)在文件指针处开始,覆盖原内容;
(3)只是写入功能,无法使用read()功能
3.'r+',读写+只读,注意文件指针位置

4.'w+',读写+写入,注意文件指针位置
5.'a+',读写+添加,只在文件内容末尾添加内容,即使用seek()功能改变文件指针,该模式下打开文件,使用f.write()添加内容,仍然添加在文件内容末尾;

6. f.seek(n,0), n为西文的字符个数即字节数,如果是中文则一个中文为2个字节数即2个西文;使用f.read()或 f.readline()的时候,注意文件指针不能在一个中文中间开花,即不能将中文字一分为二;
7. f.readline(),从指针位置开始读取,而不是读取整行;

8. path的表示方法:d:/test.txt, d://test.tx, d:\\test.txt,只有d:\test.txt 打不开文件
9. 如果使用全数字123.txt 则数字会被转化为字母S,并会生产文件名;比如d:\123.txt,因为其中少一个转义字符'\',并且文件名为全数字,按照标准会出错的,但是python将其转化为S.txt;

10. f.close()及时关闭文件,避免文件在缓存中丢失(垃圾回收机制:引用计数降为0会自动关闭文件)
11. f.seek()按字节计数,f.read()按字符计数; 使用时,需注意同步;

12. f.seek(offset,from), 文本方式打开只可以使用from=0, 否则使用from=1,2会出错;二进制即b方式打开才可以使用from = 1, 2;
页: [1]
查看完整版本: L28 文件打开基础操作 理解