无法在临时目录中创建文件

2024-06-07 10:17:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用一个临时目录在其中创建文件,但在我将代码直接放在“main”中之前,它无法工作。我想知道为什么

这段代码不想工作,告诉我“没有这样的文件或目录”:

def use_temp_directory():
    tmpdir = tempfile.TemporaryDirectory()
    os.chdir(tmpdir.name)
    return tmpdir.name

if __name__ == "__main__":
    _ = use_temp_directory()
    create_file(filepath="./somefile.txt", mode="w")

此代码确实有效:

if __name__ == "__main__":
    tmpdir = tempfile.TemporaryDirectory()
    os.chdir(tmpdir.name)
    create_file(filepath="./somefile.txt", mode="w")

对我来说,两个代码都是一样的,我缺少什么


Tags: 文件代码name目录ifosusemain
2条回答

您只返回目录的名称,但是当函数返回时,目录本身tmpdir超出范围,因此被删除

您可以使用TemporaryDirectory作为上下文管理器,它将在退出时删除目录:

with tempfile.TemporaryDirectory() as td:
    # do something with `td` which is the name of the directory

正如刚刚了解到的,从文档中可以看出:

tempfile.TemporaryDirectory(suffix=None, prefix=None, dir=None)

此函数使用与mkdtemp()相同的规则安全地创建临时目录。结果对象可以用作上下文管理器(参见示例)完成上下文或销毁临时目录对象后,新创建的临时目录及其所有内容将从文件系统中删除

相关问题 更多 >

    热门问题