我想使用一个临时目录在其中创建文件,但在我将代码直接放在“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")
对我来说,两个代码都是一样的,我缺少什么
您只返回目录的名称,但是当函数返回时,目录本身
tmpdir
超出范围,因此被删除您可以使用
TemporaryDirectory
作为上下文管理器,它将在退出时删除目录:正如刚刚了解到的,从文档中可以看出:
tempfile.TemporaryDirectory(suffix=None, prefix=None, dir=None)
此函数使用与mkdtemp()相同的规则安全地创建临时目录。结果对象可以用作上下文管理器(参见示例)完成上下文或销毁临时目录对象后,新创建的临时目录及其所有内容将从文件系统中删除
相关问题 更多 >
编程相关推荐