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

读文件:r

f=open('test.txt',mode='r')for line inf:print(line)

f.close()

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

64a742017a5575c5b7cbec5529b268fa.png

72b7ad69d84cd30fa505f7ad5425f143.png

二进制读取:rb

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

f=open('test1.txt',mode='w',encoding="gbk")#unicode会自动转码位gbk

f.write("unicode编码写入gbk文件")

f.close()

86ac87442813eaa94093ba6284289e50.png

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

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

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

f=open('test2.txt',mode='wb')#unicode会自动转码位gbk

f.write("unicode编码写入gbk文件")

f.close()

145576e373296c52069c5e87ea3fd13d.png

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

f=open('test2.txt',mode='wb')#unicode会自动转码位gbk

f.write("二进制模式写字符串到文件,需要先进行编码".encode('gbk'))

f.close()

c52f13ae0ee6d1ae0d2b59734a0c4ff0.png

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

f=open('test3.txt',mode='a',encoding='gbk')#unicode会自动转码位gbk

f.write("这是追加部分内容")

f.close()

8912e6c9886c155d09b88ffcb8a6e8f0.png

混合模式:

r+,读的模式打开文件,支持写入,即读写模式

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

文件操作:

fileno()返回文件句柄再内核中的索引值,IO多路复用会用到

flush()把文件从内存buffer里强制刷新到硬盘,close()时会自动保存到硬盘

18e1d87d2be63dad591dd17eb2dfdba3.png

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

fe0c32c7641e6d948ad8bb27f7c8af40.png

flush()后会存入硬盘

a50f92c711ca1b6fef4a62fb272f420f.png

readable()判断是否可读

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

4857dd4612dee50743a57ff6951e70b7.png

readline()读取一行,即遇到\r或\n结束

seek()把操作文件的光标移动到指定位置

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

cfe25c1e459ecca136db6570816a4cc2.png

3046a0f7d70bff174a1fffafd23800f2.png

seekable()判断文件是否可进行seek操作,如设备是不可seek的

tell()返回当前文件操作光标

55e62321f5902e0a7d28b2a55886486e.png

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

e7828c0fba254a99a3cc0e2a4c5301e5.png

writable()判断文件是否可写

修改文件

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值