我先发写一个test.txt的内容

111
222
333

一、python规范写法

(1) 第一种,这种方法要使用close进行关闭文件
f = open("test.txt",'r')
lines = f.read()
print(lines)
f.close()
(2) 第二种,用wiith可以在结束后默认执行关闭这个文件,赋值给f的同时减少代码行数结构更加美观
with open("test.txt",mode="r") as f:
	lines = f.read()
	print(lines)

二、python中的内置模块 read

open中的’r’的由来可以先不用管它,在后续我会对此进行解读

(1)read() #读取至文件结束为止 - 字符串模式
>>> f = open("test.txt",'r') #open = 打开或创建文件 
#"test.txt"是文件的位置,'r'是读写的一种形式
>>> lines = f.read()
>>> print(lines) #在print中会自动将文本中的换行符给使用了
111
222
333
>>> lines #当在shell中直接输入会发现文件末端有\n的换行符
'111\n222\n333'
>>> f.close() #close = 关闭文件

read中可以输入一个参数,read©,当不输入参数时会默认打印所有内容

参数c是读取c个字符,换行符(\n)只算一个

python如何读文件内容 python文件读方法_python文件处理

(2)readine() #将会以指针位置进行输出 - 字符串模式
>>> f = open('test.txt','r')
>>> print(readline())  
111

>>> #当输入时会发现多一行回车,这是因为print中本身会默认自带\n的换行符,
>>> #再加上txt中也会带一个\n的换行符导致双回车导致的
>>> #可以把print中的默认换行符去掉
>>> print(readline(),end='')
222
>>> #end参数是print结束后会执行的内容,当改为''将不输出
>>> readline()
'333\n'
(3)readlines() #读取文件所有行,每行一个列表 - 列表模式
>>> f = open('test.txt','r')
>>> lines = f.readlines()
>>> lines
['111\n', '222\n', '333']
>>> type(lines)
<class'list'>
>>> f.close()

三、linecache模块

(1)、linecache.getline(filename,lineno) #获取文件中第n行 - 字符串模式
>>> linecache.getline('test.txt',1)
'111\n'
(2)、linecachegetlines(filename) #读取文件所有行,每行一个列表 - 列表模式
>>> linecache.getlines('test.txt')
['111\n', '222\n', '333\n']
>>> linecache.getlines('test.txt')[0:2] #这是个列表可以使用切来来执行
['111\n', '222\n']
(3)、linecache.checkcache(filename) #更新文件缓存,在获取新的内容,省略filename则清除所有
>>> linecache.checkcache('test.txt')
(4)、linecache.updatecache(filename) #如果文件数据更改后,需要再调用此模块要
>>> #更改数据后
>>> linecache.getlines('test.txt')
['111\n', '222\n', '333\n']
>>> linecache.updatecache('test.txt')
['111\n', '222444\n', '333\n']
>>> linecache.getlines('test.txt')
['111\n', '222444\n', '333\n']
(5)linecache.clearcache()当不使用necache模块时在结尾加上该函数可以减少耗费的缓存
>>> linecache.clearcache()