如何读取文本文件中的特定行?
How do I read a specific line on a text file?
让我试着解释一下。我有一个文本文件,文本文件的每一行都是一个不同的字符串。我的麻烦是,如果我想获取第 3 行。当我尝试使用 file.readline(3)
或 file.read(3)
时,我将获取文本文件第一行的前 3 个字符,而不是第 3 行的所有字符。我也试过 file.readlines(3)
但刚刚返回 ['one\n']
恰好又是第一行,周围有 [' \n']
。我已经遇到了更多的麻烦,但我已经放弃了,需要帮助。如果有帮助,我将通过 discord 机器人完成所有这些工作,尽管这不应该影响这一点。
正如 Barmar 所说,使用 file.readlines()。 file.readlines 制作行列表,因此请为您要阅读的行使用索引。请记住,第一行是 0 而不是 1,因此将文本文档的第三行存储在变量中将是 line = file.readlines()[2]
。
编辑:另外,如果科波菲尔所说的是你的情况,你可以这样做:
def read_line_from_file(file_name, line_number):
with open(file_name, 'r') as fil:
for line_no, line in enumerate(fil):
if line_no == line_number:
file.close()
return line
else:
file.close()
raise ValueError('line %s does not exist in file %s' % (line_number, file_name))
line = read_line_from_file('file.txt', 2)
print(line)
if os.path.isfile('file.txt'):
os.remove('file.txt')
它是一个更具可读性的函数,因此您可以根据自己的喜好对其进行反汇编
不幸的是,您无法以简单的方式转到文件中的特定行,您需要遍历文件直到到达所需行或确切知道该行从文件开始的位置并查找然后从中读取一行
首先你可以做:
def getline(filepath,n):
with open(filepath) as file:
for i,line in enumerate(file):
if i == n:
return line
return ""
当然你可以file.readlines()[2]
但是首先读取所有文件并将其所有行放入列表中,如果文件很大,这可能是个问题
对于其他选项,请检查此答案 here
让我试着解释一下。我有一个文本文件,文本文件的每一行都是一个不同的字符串。我的麻烦是,如果我想获取第 3 行。当我尝试使用 file.readline(3)
或 file.read(3)
时,我将获取文本文件第一行的前 3 个字符,而不是第 3 行的所有字符。我也试过 file.readlines(3)
但刚刚返回 ['one\n']
恰好又是第一行,周围有 [' \n']
。我已经遇到了更多的麻烦,但我已经放弃了,需要帮助。如果有帮助,我将通过 discord 机器人完成所有这些工作,尽管这不应该影响这一点。
正如 Barmar 所说,使用 file.readlines()。 file.readlines 制作行列表,因此请为您要阅读的行使用索引。请记住,第一行是 0 而不是 1,因此将文本文档的第三行存储在变量中将是 line = file.readlines()[2]
。
编辑:另外,如果科波菲尔所说的是你的情况,你可以这样做:
def read_line_from_file(file_name, line_number):
with open(file_name, 'r') as fil:
for line_no, line in enumerate(fil):
if line_no == line_number:
file.close()
return line
else:
file.close()
raise ValueError('line %s does not exist in file %s' % (line_number, file_name))
line = read_line_from_file('file.txt', 2)
print(line)
if os.path.isfile('file.txt'):
os.remove('file.txt')
它是一个更具可读性的函数,因此您可以根据自己的喜好对其进行反汇编
不幸的是,您无法以简单的方式转到文件中的特定行,您需要遍历文件直到到达所需行或确切知道该行从文件开始的位置并查找然后从中读取一行
首先你可以做:
def getline(filepath,n):
with open(filepath) as file:
for i,line in enumerate(file):
if i == n:
return line
return ""
当然你可以file.readlines()[2]
但是首先读取所有文件并将其所有行放入列表中,如果文件很大,这可能是个问题
对于其他选项,请检查此答案 here