首页 > 其他 > 详细

文件-读、写、追加已经文件操作

时间:2018-04-14 22:42:08      阅读:222      评论:0      收藏:0      [点我收藏+]

 

读文件:r

f=open(test.txt,mode=r)
for line in f:
    print(line)
f.close()

print本身会换行,文本自带一个\n,所以有换行

技术分享图片

技术分享图片

二进制读取:rb

写文件:w,w会创建新文件,有同名则删除内容再写入

f=open(test1.txt,mode=w,encoding="gbk")
#unicode会自动转码位gbk
f.write("unicode编码写入gbk文件")
f.close()

技术分享图片

二进制写文件:wb,wb也会创建文件,有同名则删除内容再写入

图片,音乐,视频等写入需用wb模式,二进制模式

二进制模式写字符串到问文件,会报错。提示需要二进制数据,非字符串

f=open(test2.txt,mode=wb)
#unicode会自动转码位gbk
f.write("unicode编码写入gbk文件")
f.close()

技术分享图片

解决以上问题,我们需要用encode方法,encode方法不传参python3默认用utf-8进行编码

f=open(test2.txt,mode=wb)
#unicode会自动转码位gbk
f.write("二进制模式写字符串到文件,需要先进行编码".encode(gbk))
f.close()

技术分享图片

文件追加:a 或ab,源文件用二进制模式追加必须用ab模式,否则乱码

f=open(test3.txt,mode=a,encoding=gbk)
#unicode会自动转码位gbk
f.write("这是追加部分内容")
f.close()

技术分享图片

混合模式:

  • r+,读的模式打开文件,支持写入,即读写模式
  • w+,写的模式打开文件,支持读取,即写读模式,w+也会将原有文件清楚

文件操作:

  • fileno()返回文件句柄再内核中的索引值,IO多路复用会用到
  • flush()把文件从内存buffer里强制刷新到硬盘,close()时会自动保存到硬盘

技术分享图片

写入文件,但是内容打开是空白

技术分享图片

 flush()后会存入硬盘

技术分享图片

  • readable()判断是否可读

以w模式打开,判断是否可读

技术分享图片

  • readline()读取一行,即遇到\r或\n结束
  • seek()把操作文件的光标移动到指定位置

seek是按字节移动光标,至于移动多少个字符,与文件编码有关,gbk移动两个字节位一个字符,utf8移动三个字节算一个字符,read是按字符读取

技术分享图片

技术分享图片

  • seekable()判断文件是否可进行seek操作,如设备是不可seek的
  • tell()返回当前文件操作光标

技术分享图片

  • truncate()从指定位置截取文件到末尾,不指定位置则从当前位置截取

技术分享图片

  • writable()判断文件是否可写

修改文件

先f.seek(),再write()会替换文件,而且可能会存在乱码。所以修改需全部读入内存再进行修改,之后再保存覆盖。

文件-读、写、追加已经文件操作

原文:https://www.cnblogs.com/yaya625202/p/8836125.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!