【问题标题】:Python - Where should a library store temporary files?Python - 库应该在哪里存储临时文件?
【发布时间】:2012-01-06 11:43:48
【问题描述】:

我正在编写一个 Python 库,它需要在本地机器上缓存远程数据。

我想防止库污染操作系统并将临时文件放在不属于它们的位置。使用操作系统默认临时文件夹似乎有点冗长,因为我想使用一种独立于操作系统的方式来执行此操作。

将缓存文件存储在包文件夹中有效吗? Python 安装是否有临时文件的文件夹?

帮助会很棒! :)

【问题讨论】:

  • 如果缓存需要在重新启动后仍然存在,则文件不是临时文件。相反,您可以查看 pypi.python.org/pypi/appdirs 的跨平台 user_cache_dir 函数。

标签: python package temporary-files temporary-directory


【解决方案1】:

考虑使用tempfile,参见http://docs.python.org/library/tempfile.html

【讨论】:

  • 会的。但是您不必担心,因为所有临时文件都将被删除(特定于用户的操作系统、重新启动时或间隔)。而且每次你​​调用它,它都会给你另一个不同的文件路径,不会有冲突。
  • 如果您创建一个 tempfile.TemporaryFile 对象,它将在关闭时自动为您销毁(显式和隐式)。如果您使用 tempfile.mkstemp,您将负责删除临时文件。如果您使用 tempfile.mkdtemp 创建一个临时目录来存储您的所有文件,您将负责删除该目录
  • @ftartaggia 我不知道TemporayFile 对象,谢谢指出。
  • @qiao 如果你有兴趣,tempfile 模块还定义了 NamedTemporaryFile 和 SpooledTemporaryFile(临​​时文件只存储在内存中,直到它的大小超过某个阈值或调用它的 fileno() 方法)
  • @ftartaggia 很高兴知道这一点。我会更深入地查看这些文件。感谢您的努力:)
【解决方案2】:

默认答案是使用tempfile;如果您正在使用其他一些跨平台工具包,可能还有其他实现相同的抽象方法,例如在 PyQt/PySide 中您有 QtCore.QTemporaryFile

【讨论】:

    【解决方案3】:

    还可以考虑让用户指定您的库应如何处理临时文件或存储它们的位置

    【讨论】:

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