python3 file.readline EOF?

新手上路,请多包涵

我无法确定何时使用 file.readline 在 python 中到达文件末尾

fi = open('myfile.txt', 'r')
line = fi.readline()
if line == EOF:  //or something similar
    dosomething()

c = fp.read() if c is None: 将不起作用,因为那样我将在下一行丢失数据,如果一行只有回车符,我将错过一个空行。

我看过几十篇或相关的文章,它们都使用了固有的循环,这些循环在完成时就会中断。我没有循环,所以这对我不起作用。此外,我的文件大小以 GB 为单位,有数百行。一个脚本可能要花几天时间来处理一个文件。所以我需要知道如何判断我何时在 python3 中的文件末尾。任何帮助表示赞赏。谢谢!

原文由 noone392 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 378
1 个回答

我遇到了同样的问题。我的具体问题是对两个文件进行迭代,其中较短的文件只应该在对较长文件的特定读取时读取一行。

正如此处提到的那样,逐行迭代的自然 pythonic 方法就是迭代。我坚持这种“自然性”的解决方案是手动使用文件的迭代器属性。是这样的:

 with open('myfile') as lines:
    try:
        while True:                 #Just to fake a lot of readlines and hit the end
            current = next(lines)
    except StopIteration:
        print('EOF!')

你当然可以用你自己的 IOWrapper 类来修饰它,但这对我来说已经足够了。只需将对 — 的所有调用替换为 readline next 调用,并且不要忘记抓住 StopIteration

原文由 kabanus 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进