读取文件循环未在整个文件中循环

2024-04-27 03:15:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉Python。我用它来读一个大文件。为此,我使用文件对象作为迭代器,正如jyotidas在这里的第六个答案中指定的:How can I read large text files in Python, line by line, without loading it into memory?

我的代码:

with open(filename, 'r', buffering=100000) as f:
    time_data_count = 0
    for line in f:
        if 'TIME_DATA' in f:
            time_data_count += 1
    if time_data_count > 20:
        print("time_data complete")
    else:
        print("incomplete time_data data")

但是,我的代码只读取文件的第一行,然后存在循环,因此time\u data\u count保持为0。为什么会这样?

我试着进入代码,但我不明白为什么它只停在第一行


Tags: 文件对象答案代码inreaddataif
1条回答
网友
1楼 · 发布于 2024-04-27 03:15:40

您测试了if 'TIME_DATA' in f:,它使用整个文件查找字符串(除非最后一行就是该字符串,并且不是以换行符结尾,否则它将找不到该字符串)。这意味着当for循环尝试转到下一行时,文件迭代器将耗尽

你的意思是测试if 'TIME_DATA' in line:

相关问题 更多 >