【问题标题】:Python pandas - Does read_csv keep file open?Python pandas - read_csv 是否保持文件打开?
【发布时间】:2015-06-07 15:29:05
【问题描述】:

当使用pandas read_csv() 方法时,是保持文件打开还是关闭(丢弃文件描述符)?

如果它保留它,我使用完数据框后如何关闭它?

【问题讨论】:

  • 您可以预期,每个正确设计的打开文件描述符的读取方法也会在返回之前将其关闭。
  • 如我所愿,我只是想确定一下..
  • 我也预料到了,但我得到了惊喜。我无法解释为什么 Windows 告诉我我不能移动文件,因为 python 正在持有它......(但也许它是 spyder,à python Ide......)
  • 我很想知道如果在解析文件和构建熊猫时抛出异常,这是否可以保证(关闭文件描述符)。

标签: pandas


【解决方案1】:

如果你传递一个打开的文件,它将保持打开状态(从当前位置读取),如果你传递一个字符串,那么read_csv 将打开和关闭文件。


在 python 中,如果你打开一个文件但忘记关闭它,python 会在函数块的末尾(在垃圾回收期间)为你关闭它。

def foo():
    f = open("myfile.csv", "w")
    ...
    f.close()  # isn't actually needed

即如果您调用打开文件的 python 函数,除非返回文件对象,否则文件会自动神奇地自动关闭。

注意:首选语法是 with 块(除了在 with 块末尾关闭 f 外,还仅在 with 块内定义了 f 变量):

def foo():
    with open("myfile.csv", "w") as f:
        ...

【讨论】:

  • 使用Iterator = True怎么样?我正在阅读一些 Python 代码,它们逐块解析一个大文件,它似乎需要 store = pd.read_csv(...); store.close() 语法。在我的单元测试期间,我仍然会收到关于文件处于打开状态的警告。
猜你喜欢
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
相关资源
最近更新 更多