在很多时候可能需要读取某个txt文件,例如在蓝桥杯的填空题中很多时候都需要读入一个文本文件(读取txt文件是必须要学会的操作),并且需要计算文本文件中的某些内容。对于python语言来说,常见的读取txt文件一般有三种方法,分别为read/readline/readlines
① read方法读取的是整个文件,并且方法的返回值为str字符串类型
② readline方法是每次读取的是文件的一行内容,并且方法的返回值为str字符串类型
③ readlines方法读取的是整个文件,方法的返回值为list列表,读取文件的每一行作为list中的一个元素,我们通过遍历读取到的文件将其加入一个列表中这样循环结束之后就可以得到以字符串类型的二维列表(经常使用到的这个方法来读取整个文件,这样遍历得到的文件对象最终转换为了二维列表,转换为了二维列表就可以使用索引的方式访问列表中的内容)而且readlines()方法比readline()方法读取速度快很多,当没有足够内存读入整个文件的时候那么可以使用readline()方法逐行进行读取
使用readlines()方法读取文件,遍历文件中的每一行最终将读取的文件转换为一个二维列表:
if __name__ == '__main__':
f = open("data.txt", "r")
res = f.read()
print(type(res))
print(res)
f.close()
f = open("data.txt", "r")
res = f.readlines()
t = list()
for cur in res:
# strip方法去除每一行的换行符
t.append(list(cur.strip("\n")))
# t为一个二维列表
print(t)
f.close()
202002022
202020020
202020202
202020020
使用readline()方法读取两个文件判断文件从哪一行开始不同,这个方法在两个大文件中找出第一个不同行会很有用,并且在遍历的时候可以计算文件的行数:
if __name__ == '__main__':
file1 = open("D:/output/output1.txt", "r+")
file2 = open("D:/output/output2.txt", "r+")
txt1 = file1.readline()
txt2 = file2.readline()
count = 0
while txt1 and txt2:
if txt1 != txt2:
print(txt1)
print(txt2)
break
# 文件不同的行数
count += 1
# 继续读取文件的一行
txt1 = file1.readline()
txt2 = file2.readline()
# 输出哪一行不同
print(count)
使用readline()方法逐行读取文件直到文件末尾
if __name__ == '__main__':
# 指定读取的编码格式
f = open("data2.txt", "r", encoding="UTF-8")
txt = f.readline()
# txt是否为空可以作为判断文件是否到了末尾
while txt:
print(txt, end="")
# 读取文件的下一行
txt = f.readline()
f.close()
除了上面使用read/readline/readlines方法读取文件之外,还可以不使用这些方法,直接遍历open方法返回的文件对象,在遍历的时候其实得到的是文件中每一行,并且每一行的内容为str字符串类型:
if __name__ == '__main__':
f = open("data3.txt", "r", encoding="UTF-8")
for line in f:
print(line)