Python 初学者练习:文件读取方法详解

在本文中,我们将学习如何在 Python 中读取文件中的数据。

Python中文件打开模式

模式 描述
r 打开文件进行读取。(默认)
w 打开文件进行写入。如果文件不存在,则创建新文件,如果文件存在,则截断该文件。
x 打开文件进行独占创建。如果该文件已存在,则操作将失败。
a 打开文件以追加在文件末尾而不截断它。创建一个新文件(如果该文件不存在)。
t 以文本模式打开。(默认)
b 以二进制模式打开。
+ 打开文件进行更新(读取和写入)

Python中读取文本文件

以下代码演示如何在 Python 中使用绝对路径读取文本文件。

读取整个文件内容,使用read()函数:

try:
    fp=open(r"C:\temp\files\abc.txt", "r")
    txt1=fp.read()
    print(txt1)
    fp.close()
except FileNotFoundError:
    print("请检查路径!")

读取文件中的n个字符

使用read(n),从光标位置开始读取,跨行读取时,换行符计算在内。

try:
    fp=open(r"C:\temp\files\abc.txt", "r")
    txt1=fp.read(10)
    print(txt1)
    fp.close()
except FileNotFoundError:
    print("请检查路径!")

从文件读取一行readline():

try:
    fp=open(r"C:\temp\files\abc.txt", "r")
    txt1=fp.readline()
    print(txt1)
    fp.close()
except FileNotFoundError:
    print("请检查路径!")

从文件中读取前3行

可以使用for循环读取:

 with open('abc.txt', 'r') as file:
    for i in range(3):
        print(file.readline().strip())

使用readline()读取整个文件

我们可以使用readline(),通过 while 循环读取整个文件。只需要检查指针是否已到达文件末尾,然后逐行遍历文件。

with open('abc.txt', 'r') as file:
    #读第一行
    line=file.readline()
    #读取内容不为空,则循环读取
    while line!='':
        print(line, end='')
        line=file.readline()

使用 readline() 读取第一行和最后一行

因为readline()方法总是从头开始读取,可以通过调用该方法来获取第一行。可以使用循环来获取最后一行。

with open("abc.txt", "r") as file:
    #读第一行
    first_line=file.readline()
    print(first_line)
    for last_line in file:
        pass
    print(last_line)

使用readlines()将文件内容读入列表

readlines()将返回整个文件内容。内容的读取将从文件的开头开始,直到文件结束。并将内容存储在列表中。此方法的输出是一个列表。

with open('abc.txt', 'r') as fp:
    txt=fp.readlines()
    print(txt)

从文件中读取前n行存储到列表

n=2
with open("abc.txt","r") as file:
    head=[next(file) for x in range(n)]
print(head)

从文件中读取后n行存储到列表

可以通过使用列表索引和切片来获取文件的最后几行。

n=2
with open('abc.txt', 'r') as fp:
    txt=fp.readlines()[n:]
print(txt)

以相反的顺序读取文件

默认从文件开头读取内容,还可以使用reversed()方法以相反的顺序读取文件的内容。

with open('abc.txt', 'r') as fp:
  txt=fp.readlines()
  for i in reversed(txt):
    print(i)

读取二进制文件

二进制文件是包含(0和1)数据的文件。通常一行没有终止符EOL(行尾)。

with open("1.jpg", "rb") as fp:
    byte_content=fp.read(1)
    while byte_content:
         print(byte_content)

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!