Python文件操作中的aa+ww+rb+rw+ra+几种方式的区别.docx

上传人:A*** 文档编号:141375730 上传时间:2020-08-07 格式:DOCX 页数:4 大小:13.12KB
返回 下载 相关 举报
Python文件操作中的aa+ww+rb+rw+ra+几种方式的区别.docx_第1页
第1页 / 共4页
Python文件操作中的aa+ww+rb+rw+ra+几种方式的区别.docx_第2页
第2页 / 共4页
Python文件操作中的aa+ww+rb+rw+ra+几种方式的区别.docx_第3页
第3页 / 共4页
Python文件操作中的aa+ww+rb+rw+ra+几种方式的区别.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《Python文件操作中的aa+ww+rb+rw+ra+几种方式的区别.docx》由会员分享,可在线阅读,更多相关《Python文件操作中的aa+ww+rb+rw+ra+几种方式的区别.docx(4页珍藏版)》请在金锄头文库上搜索。

1、Python文件操作中的a,a+,w,w+,rb+,rw+,ra+几种方式的区别 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https:/ w+ a+ 都是以读写方式打开,rb二进制读,wb二进制写,rb+ wb+ ab+二进制读写buffering:默认值二、对文件进行操作将文件中的内容读入到一个字符串变量/列表中函数:read(),readline(),readlines(),write(),writelines()1、read() 读取整个文件到字符串变量中2、readline() 读取文件中的一行,然后返回整行,

2、包括行结束符到字符串变量中3、readlines() 读取整个文件,返回一个字符串列表,列表中的每个元素都是一个字符串,代表一行第一步 排除文件打开方式错误:r只读,r+读写,不创建w新建只写,w+新建读写,二者都会将文件内容清零(以w方式打开,不能读出。w+可读写)w+与r+区别:r+:可读可写,若文件不存在,报错;w+: 可读可写,若文件不存在,创建r+与a+区别:1. fd = open(1.txt,w+)2. fd.write(123)3. fd = open(1.txt,r+)4. fd.write(456)5. fd = open(1.txt,a+)6. fd.write(789)

3、结果:456789说明r+进行了覆盖写。以a,a+的方式打开文件,附加方式打开(a:附加写方式打开,不可读;a+:附加读写方式打开)以 U 标志打开文件, 所有的行分割符通过 Python 的输入方法(例#如 read*() ),返回时都会被替换为换行符n. (rU 模式也支持 rb 选项) .r和U要求文件必须存在不可读的打开方式:w和a若不存在会创建新文件的打开方式:a,a+,w,w+1. fd=open(rf:mypythontest.py,w) #只读方式打开,读取报错2. fd.read()3. Traceback (most recent call last):4. File ,

4、line 1, in 5. IOError: File not open for reading6. fd=open(rf:mypythontest.py,a)#附加写方式打开,读取报错7. fd.read()8. Traceback (most recent call last):9. File , line 1, in 10. IOError: File not open for reading11. 2.正确读写方式打开,出现乱码1. fd=open(rf:mypythontest.py,a+)2. fd.write(123)3. fd.read()4. fd.close()close之

5、前,手动打开文件,什么都没写入;close后,手动打开文件,乱码:123嚅? 原因分析:指针问题。open()以a+模式开启了一个附加读写模式的文件,由于是a,所以指针在文件末尾。此时如果做read(),则Python发现指针位置就是EOF,读取到空字符串。在写入123之后,指针的位置是4,仍然是文件尾,文件在内存中是123EOF。但看起来read()的时候,Python仍然去试图在磁盘的文件上,将指针从文件头向后跳3,再去读取到EOF为止。也就是说,你实际上是跳过了该文件真正的EOF,为硬盘底层的数据做了一个dump,一直dump到了一个从前存盘文件的EOF为止。所以最后得到了一些根本不期待

6、的随机乱字符,而不是编码问题造成的乱码。解决方案:读取之前将指针重置为文件头(如果读取之后重置再读,无效)1. fd=open(rf:mypythontest.py,a+)2. fd.seek(0)3. fd.read()4. 123 #顺利读出3.文件里有内容,却读出空字符1. fd=open(rf:mypythontest.py,w+) #清空内容,重新写入2. fd.write(456)3. fd.flush() #确定写入,此时文件内容为“456”4. fd.read()5. #读出空原因:同样是指针问题,写入后指针指向末尾EOF,因此读出空解决方案一、调用close后重新打开,指针位

7、于开头。(r,r+,a+,U都可以,注意不要用w,w+,a打开)1. fd.close()2. fd=open(rf:mypythontest.py,a+)3. fd.read()4. 4565. fd.close()6. fd=open(rf:mypythontest.py,r+)7. fd.read()8. 456 fd.close()9. fd=open(rf:mypythontest.py,r)10. fd.read()11. 45612. fd.close()13. fd=open(rf:mypythontest.py,U)14. fd.read()15. 456解决方案二、调用se

8、ek指向开头1. fd=open(rf:mypythontest.py,w+)2. fd.write(456)3. fd.seek(0)4. fd.read()5. 456seek函数 seek(offset, whence) ,offset是相对于某个位置的偏移量。位置由whence决定,默认whence=0,从开头起;whence=1,从当前位置算起;whence=2相对于文件末尾移动,通常offset取负值。4. 记得close()关闭当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险:with open(/Users/michael/test.txt, w) as f: f.write(Hello, world!)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号