簡體   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