【问题标题】:How do I assess if a file is closed?如何评估文件是否已关闭?
【发布时间】:2014-04-29 14:32:38
【问题描述】:

我写了以下内容:

y=open('S:\\02012014EASTERN.TXT','r').readlines()

我不知道该文件现在是否已关闭。我该如何测试?

【问题讨论】:

    标签: python file python-3.x


    【解决方案1】:

    您无法对此进行测试,因为您从未存储对文件对象的引用。

    最好将文件对象用作上下文管理器,这样可以确保关闭文件对象:

    with open('S:\\02012014EASTERN.TXT','r') as ofh:
        y = ofh.readlines()
    

    因为 CPython 使用引用计数,所以在您的代码中文件对象将立即关闭并清除,但您不能指望在垃圾收集可能延迟的其他 Python 实现中这种行为。

    【讨论】:

      【解决方案2】:

      虽然其他答案为您提供了最佳方法(使用 'with' 语句),但如果您感到好奇,您可以这样做:

      f = open('S:\\02012014EASTERN.TXT','r')
      y = f.readlines()
      print(f.closed)
      f.close()
      print(f.closed)
      

      第一个“打印”语句将产生“假”,第二个将产生“真”。

      但同样,在“真实”代码中,请改用“with”结构。它将为您完成关闭。

      【讨论】:

        【解决方案3】:

        用途:

        with open(file) as f:
             your code here
        

        它会在with语句块结束后调用__exit__方法来确保文件被关闭。

        【讨论】:

          猜你喜欢
          • 2021-10-10
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 2019-06-08
          • 2017-03-29
          • 1970-01-01
          • 2013-11-08
          • 1970-01-01
          相关资源
          最近更新 更多