Python: IO操作(文件操作)

读文件

使用python内置的函数open()可以打开一个文件(类似C语言):

f = open('file.txt', 'r')
f.read()
f.close()

文件读写时可能都会出错,产生IoError,一旦出错f.close()就不能用,所以我们可以使用try…finally

try:
    f = open('file.txt', 'r')
    f.read()
finally:
    if f:
        f.close()

with方法

with open('xxx.txt', 'r') as f:
    print(f.read())

# 使用with语句不用调用close()   

调用read()会一次性读取文件的全部内容,为了保险起见,可反复调用read(size)方法,每次最多读取size个字节,另外,调用readline()可以每次读取一行内容,调用readlines()一次性读取所有内容并返回list

如果文件很小,read()方法最方便;如果不能确定文件的大小,可反复调用read(size);如果是读取配置文件,那么readlines()最方便

for line in f.readlines():
    print(line.spilt())     # 把末尾的'\n'删掉

要读取非UTF-8编码的文本文件,需要给open()函数传入enconding参数,如:

f = open('gbk_file', 'r', enconding='gbk')
f.read()

遇到编码不规范的的文件,你可能遇到++UnicodeDecodeError++,因为在文本中可能夹杂了一些非法编码的字符。遇到这种情况++open()++\函数还要传入一个++errors++参数,表示遇到编码错误后怎么处理,最简单的方法就是忽略

f = open('code_error', 'r', encoding='gbk', errors='ignore')
写文件

读文件和写文件是一样的,唯一的区别就是open()行数所传的标识符,’w’或’wb’表示写文本文件或者二进制文件

f = open('test.txt', 'w')
f.write('Hello, python')
f.close()

你可以调用write()函数一直写文件,但必须使用f.close()函数关闭文件。当我们写文件时,操作系统不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再写。忘记调用close()可能会使后面的数据丢失,所以还是用with比较保险

with open('test.txt', 'w') as f:
    f.write('hello, python')

要给文件写入指定编码的数据,可以给write()函数传入特定的encoding参数

总结:
  • 不管是读文件还是写文件,操作完成后都要调用close()来关闭文件
  • 但是调用with… as就可以省去close()了
  • 可以指定读取和写入文件编码方式,就是在对用函数中加入encoding=’xxx’
  • 读取编码不规范的文本,可以忽略,在read()函数中加入errors=’ignore’
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值