【问题标题】:Create temporary file in Python that will be deleted automatically after sometime在 Python 中创建临时文件,该文件将在一段时间后自动删除
【发布时间】:2017-06-28 09:37:50
【问题描述】:

是否可以在 python 中创建一段时间后将被删除的临时文件?我检查了生成临时文件和目录的tempfile 库。

tempfile.TemporaryFile : 这个函数创建临时文件,一旦关闭就会被销毁。

tempfile.NamedTemporaryFile:这个函数接受一个参数delete。如果在调用函数时为 delete 赋予值 false,则文件不会在关闭时被删除。

我需要的是一个临时文件,即使在我关闭它之后,我也应该能够在一段时间内读取它的名称。但是,它应该会在一段时间后自动删除。

在 Python 2.7 中最简单的方法是什么?

【问题讨论】:

  • 你打算在同一个脚本中阅读它吗?
  • 不,我会得到文件名,以后需要使用该名称阅读。

标签: python temporary-files


【解决方案1】:

如果您只需要在 Python 程序中每隔一段时间运行该文件,则可以将其用作上下文管理器:

def main(file_object):
    # Can read and write to file_object at any time within this function

if __name__ == '__main__':
    with tempfile.NamedTemporaryFile() as file_object:
        main(file_object)
        # Can still use file_object
    # file_object is referencing a closed and deleted file here

如果您需要能够在 Python 程序之外打开它,比如在 main 结束之后,例如在异步运行的进程中,您可能应该寻找更持久的解决方案(例如,允许用户指定文件名。)

如果您确实需要一个临时的自动删除文件,您可以在一段时间后启动threading.Timer 将其删除,但请确保您的程序将其删除,即使它在计时器结束前停止也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多