簡體   English   中英

readline與for循環問題

[英]readline with for loop issue

我有一個.txt文件,其中包含10行文本排序(每行三個逗號分隔的單詞),但是以下內容僅讀取文本文件中的四行:

def main():
    path = '/path/to/file.txt'
    f  = open(path, 'r')
    for line in f:
        s = f.readline()
        print(s)
    f.close
main()

但這會將所有行讀入一個列表中:

def main():
    path = '/path/to/file.txt'
    f  = open(path, 'r')
    s = f.readlines()
    print(s)
    f.close
main()

為什么for循環不起作用?

for line in f您已經在讀取一行。 因此,執行readline()毫無用處,因為它將讀取下一行,這解釋了為什么讀取4行而不是10行。

當您打開file.txt時,您將獲得一個_io.TextIOWrapper對象作為f。

for line in f:將迭代的f迭代器線以獲得你的文件的每一行先后,線,進入你的line變量。 您可以在此處查看迭代器的工作方式。

f迭代你的循環開始后移動一行,你看了另一條線與s = f.readline()和提前移動你的迭代下一行。 當您結束第一個循環時,將for line in f:for line in f:讀取f的另一行for line in f:然后,通過讀取s = f.readline()的下一行來跳過該行。

您的代碼將與

def main():
    path = '/path/to/file.txt'
    with open(path, 'r') as f:
        for line in f:
            print(line)

main()

這將使所有行起作用:

with open('/path/to/file.txt') as fp:
    for line in fp.read().split('/n'):
        print(line)

for line in f:中的行,已經在文件中的行上進行了迭代,然后您嘗試在該迭代中read一行。 只需使用line的值而忽略s

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM