Pyhton 文件读写总结

一、读文件

1.  Python内置函数

f=open('/Users/laplas/data.txt','r')	 'r'表示读文件
f.read()				 一次读取文件的全部内容
f.close()				 关闭文件
f.read(size)				 最多读取size个字节内容
f.readline()				 逐行读取
f.readlines()				 一次读取所有内容并按行返回list


前面讲的默认都是读取文本文件,并且是 UTF-8 编码的文本文件,若要读取二进制文件,比如图片、视频等,用‘rb’模式打开文件即可:

f=open('/Users/laplas/test.jpg','rb')
f.read()

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

f = open('/Users/laplas/gbk.txt', 'r', encoding='gbk')

遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,

open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略: 

f = open('/Users/laplas/gbk.txt', 'r', encoding='gbk',errors='ignore')

由于文件读写时都有可能产生 IOError,一旦出错,后面的 f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,

我们可以使用 try ... finally 来实现:

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

但是每次都这么写实在太繁琐,所以, Python 引入了 with 语句来自动帮我们调用 close()方法:

with open('/path/to/file', 'r') as f:
    f.read()

这和前面的 try ... finally 是一样的,但是代码更佳简洁,并且不必调用f.close()方法。

for line in f.readlines():
    line.strip()# 删掉空格,换行,制表符等

例,data.txt的内容如下:

编号密度含糖率好瓜
10.6970.461
20.7740.3761
30.6340.2641
40.6080.3181
50.5560.2151
60.4030.2371
70.4810.1491
80.4370.2111
90.6660.0910
100.2430.02670
110.2450.0570
120.3430.0990
130.6390.1610
140.6570.1980
150.360.370
160.5930.0420
170.7190.1030

data.txt中读取数据

data=[]
with open('data.txt','r') as f:
    f.readline()
    while True:
        line=f.readline()
        if not line:
            break
        temp=line.split()
        data.append(temp)

二、写文件

1. Python内置函数

f=open('/Users/laplas/data.txt','w')     'w'表示写文本文件,'wb'表示写二进制文件
f.write('Hello,world!')			 写文件 
f.close()     				 关闭文件

只有调用 close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到

磁盘,剩下的丢失了。所以,还是用with语句来得保险:

with open('/Users/michael/test.txt', 'w') as f:
    f.write('Hello, world!')

要写入特定编码的文本文件,请给 open()函数传入 encoding 参数,将字符串自动转换成指定编码。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值