繁体   English   中英

如何读取文本文件中的特定行?

[英]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')

这是一个更具可读性的 function,因此您可以根据自己的喜好对其进行拆卸

不幸的是,您不能以简单的方式将 go 转到文件中的特定行,您需要遍历文件,直到到达所需行或确切知道该行从文件开始的位置并查找它然后读取一个从它开始

首先你可以这样做:

def getline(filepath,n):
    with open(filepath) as file:
        for i,line in enumerate(file):
            if i == n:
                return line
    return ""

当然你可以做file.readlines()[2]但是读取所有文件并首先将它的所有行放入一个列表中,如果文件很大,这可能是一个问题

对于其他选项,请在此处查看此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM