【问题标题】:Use file object of "with" more than 1 time使用“with”的文件对象超过 1 次
【发布时间】:2014-10-27 12:44:48
【问题描述】:

我想在文件中搜索一个特定的字符串,并在此基础上处理文件数据。

我知道如何打开文件 2 次。

这可以通过仅打开文件 1 次来完成吗?

代码:

with open(path, "r") as _file:
    for line in _file:
        if "my_string" in line:
            flag = True
            break

with open(path, "r") as _file:
    for line in _file;
        if flag:
            process line
            ...
        else:
            process differently
            ...

我试过了:

with open(path, "r") as _file:
    for line in _file:
        if "my_string" in line:
            flag = True
            break

    for line in _file;
        if flag:
            process line
            ...
        else:
            process differently
            ...         

但是这里第二个 for 循环从第一个循环离开的地方开始,它不是从文件的第一行开始,这就是它在这里不起作用的原因。

【问题讨论】:

  • 为什么一定要先举报?为什么不能直接在 if 循环中处理?
  • @BurhanKhalid 因为“我的字符串”在文件的第一行和最后一行之间,而且我必须处理文件的每一行

标签: python-2.7 file-io with-statement


【解决方案1】:

您需要将文件位置倒回到第二个循环之前的开头。您可以使用_file.seek(0) 来执行此操作。

【讨论】:

  • 只是想知道有没有其他方法可以做到这一点?
  • 你为什么想要不同的东西?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2013-03-05
  • 2016-04-04
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多