在python中读取文件常用的三种方法:f.read(), f.readline(), f.readlines()
假设python.txt的内容如下所示:
Python
Hello
I am fine
1.read([size])方法
read([size])方法从文件当前位置起读取size个字节,若无参数size或为负,则表示读取至文件结束为止,它返回为字符串对象。
with open("python.txt") as f:
lines = f.read()
print(lines)
print(type(lines))
输出结果:
Python
Hello
I am fine
<class 'str'>
2. readline()方法
readline() 方法用于从文件读取整行,包括 “\n” 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符。该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。
with open("python.txt") as f:
line = f.readline()
print(type(line))
while line:
print(line)
line = f.readline()
输出结果:
<class 'str'>
Python
Hello
I am fine
3. readlines()方法
readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for… in … 结构进行处理。如果碰到结束符 EOF 则返回空字符串。该方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。
with open("python.txt") as f:
lines = f.readlines()
print(type(lines))
for line in lines:
print(line)
输出结果:
<class 'list'>
Python
Hello
I am fine
4. linecache模块
linecache.getlines(filename):指向一个文件,获取其所有行。返回的是一个列表,相当于是f.readlines()的返回,列表中每行内容也都是以\n结尾的。
linecache.getlilne(filename,lineno):指定一行返回。注意这个是LineNo而不是index,也就是说getline(filename,1)返回的是第一行而不是第二行。返回的行包含换行符,另外如果指定行不存在也不会报错而是返回空行。
linecache.updatecache(filename):当文件内容发生改变时,如果需要获得到最新的文件内容,那么需要调用这个方法。如果不调用,仍然使用在缓存中的老文件内容。类似的操作还可以是linecache.clearcache之后再getlines也行。
linecache.clearcache():清除当前的所有缓存
linecache.checkcache(filename):检查缓存的有效性,如果文件已经不存在,或者内容被改变,那么老内容的缓存会被清除。在很多其他类似的场景中这个方法似乎应该是自动被调用的,但是在linecache中这个方法是需要手动调用的。从某种意义上来说,这个方法相当于是updatecache和clearcache的智能结合