【问题标题】:Python detecting EOFPython检测EOF
【发布时间】:2014-08-26 15:59:35
【问题描述】:

我正在尝试编写一个这样的 if 语句,同时读取一个 csv 文件:

if row = [] or EOF:
    do stuff

我在网上搜索过,找不到任何方法。帮忙?

【问题讨论】:

  • 文件末尾要做什么?
  • 你知道你文件的最后一个字符是否总是\n吗?
  • 我有一个数组被附加到每一行非空白行中,然后一旦它到达一个空白行或文件末尾,它应该将该数组打印到输出
  • @TimPietzcker 不,并不总是\n ...这就是我遇到的问题
  • 所以继续直到到达一个空行或文件末尾?

标签: python eof


【解决方案1】:
with open(fname, 'rb') as f:
    for line in f:
        # line = line.strip(' \r\n') # to remove spaces and new line chars if needed
        if not line:
            do stuff
    do stuff

以上就足够了。

要检查您是否在文件末尾,您也可以这样做:

import os
with open(fname, 'rb') as f:
   is_end = f.tell() == os.fstat(f.fileno()).st_size

但我认为你不需要。

【讨论】:

  • 对不起,我想我应该在问题中指定......“do stuff”位不会执行,除非有一个空行,我只希望它发生在空行和在文件的最后 - 不是在每一行......
  • 不应该是if not line:吗?
  • 是的,并在迭代结束时添加 do stuff 以在达到 eof 时执行
【解决方案2】:

不确定我是否完全理解你,但要忽略空行,我会使用if line.strip()

with open("in.txt") as f:
    for line in f:
        if line.strip():
            # append
        else:
            # do what you need
    # do last requirement

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    相关资源
    最近更新 更多