读文件:
#使用Python内置的open()函数,传入文件名和标示符
#标示符'r'表示读,这样,就成功地打开了一个文件。
f = open('D:/PycharmProjects/pachong/file/file1.txt', 'r')
#调用read()方法可以一次读取文件的全部内容
# Python把内容读到内存,用一个str对象表示
strAll = f.read()
print(strAll)
#最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭
# 因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的
f.close()
输出结果:
qqqqqqqqqqqqqqqqqqqq
ddddddddddddddddddddd
fffffffffffffffffffff
ccccccccccccccccccccc
由于文件读写时都有可能产生IOError
,一旦出错,后面的f.close()
就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally
来实现
try:
f = open('D:/PycharmProjects/pachong/file/file1.txt', 'r')
print(f.read())
finally:
if f:
f.close()
但是每次都这么写太繁琐,Python引入了with语句来自动调用close()方法:
with open('D:/PycharmProjects/pachong/file/file1.txt', 'r') as f:
print(f.read())
输出结果:
qqqqqqqqqqqqqqqqqqqq
ddddddddddddddddddddd
fffffffffffffffffffff
ccccccccccccccccccccc
readline():只读取一行
with open('D:/PycharmProjects/pachong/file/file1.txt', 'r') as f:
print(f.readline())
输出结果:
qqqqqqqqqqqqqqqqqqqq
with open('D:/PycharmProjects/pachong/file/file1.txt', 'r') as f:
print(f.readline(4))
输出结果:
qqqq
**readlines():**一次性读取文本的所有内容,并以列表的形式存储返回
with open('D:/PycharmProjects/pachong/file/file1.txt', 'r') as f:
print(f.readlines())
输出结果:
['qqqqqqqqqqqqqqqqqqqq\n', 'ddddddddddddddddddddd\n', 'fffffffffffffffffffff\n', 'ccccccccccccccccccccc']
with open('D:/PycharmProjects/pachong/file/file1.txt', 'r') as f:
for line in f.readlines():
print(line.strip()) ## 把末尾的'\n'删掉
输出结果:
qqqqqqqqqqqqqqqqqqqq
ddddddddddddddddddddd
fffffffffffffffffffff
ccccccccccccccccccccc
总结:python中读取文件函数–>read()、read(size)、readline()、readlines()的区别
read():一次性读取文本的全部内容,并以字符串的形式存储返回
read(size):方法,每次最多读取size个字节的内容
readline(): 一次性只读取文本内容的一行,并以字符串的形式存储返回
readlines(): 一次性读取文本的所有内容,并以列表的形式存储返回
①:在没有足够内存的情况下,可以考虑使用readline()
,每次只读取一行,不会太消耗内存;
②:readline()
和readlines()
相比,前者由于是一行一行读取返回的,所以相较于后者,会慢很多;
③:如果文件很小,read()
一次性读取最方便;如果不能确定文件大小,反复调用read(size)
比较保险;如果是配置文件,调用readlines()
最方便。
字符编码
通过给open()
函数传入encoding
参数,指定要读取文本文件的编码格式:
with open('D:/PycharmProjects/pachong/file/file1.txt', 'r',encoding='utf-8') as f:
print(f.read())
open()
函数还接收一个errors
参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:
with open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore') as f:
print(f.read())