[英]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.