Python 如何创建临时目录并获取其路径/文件名?
如何在Python中创建临时目录并获取其路径/文件名?使用模块中的函数:Python 如何创建临时目录并获取其路径/文件名?,python,temporary-files,temporary-directory,Python,Temporary Files,Temporary Directory,如何在Python中创建临时目录并获取其路径/文件名?使用模块中的函数: 导入临时文件 进口舒蒂尔 dirpath=tempfile.mkdtemp() # ... 用dirpath做事 shutil.rmtree(dirpath) 要扩展另一个答案,下面是一个相当完整的示例,即使在异常情况下也可以清理tmpdir: import contextlib import os import shutil import tempfile @contextlib.contextmanager def
导入临时文件
进口舒蒂尔
dirpath=tempfile.mkdtemp()
# ... 用dirpath做事
shutil.rmtree(dirpath)
要扩展另一个答案,下面是一个相当完整的示例,即使在异常情况下也可以清理tmpdir:
import contextlib
import os
import shutil
import tempfile
@contextlib.contextmanager
def cd(newdir, cleanup=lambda: True):
prevdir = os.getcwd()
os.chdir(os.path.expanduser(newdir))
try:
yield
finally:
os.chdir(prevdir)
cleanup()
@contextlib.contextmanager
def tempdir():
dirpath = tempfile.mkdtemp()
def cleanup():
shutil.rmtree(dirpath)
with cd(dirpath, cleanup):
yield dirpath
def main():
with tempdir() as dirpath:
pass # do something here
在Python3.2及更高版本中,在Python3的stdlib中有一个有用的contextmanager,可以使用模块中的 这直接来自于: 如果希望将目录保留更长的时间,可以执行以下操作:
import tempfile
temp_dir = tempfile.TemporaryDirectory()
print(temp_dir.name)
# use temp_dir, and when done:
temp_dir.cleanup()
文档还说,“在完成上下文或临时目录对象的销毁后,新创建的临时目录及其所有内容将从文件系统中删除。”因此,例如,在程序结束时,如果没有显式删除该目录,Python将清理该目录。Python的
unittest
可能会抱怨ResourceWarning:隐式清理如果我没有弄错您的问题,您还想知道临时目录中生成的文件的名称吗?
如果是,请尝试以下方法:
import os
import tempfile
with tempfile.TemporaryDirectory() as tmp_dir:
# generate some random files in it
files_in_dir = os.listdir(tmp_dir)
如果您在测试中使用它,请确保删除(shutil.rmtree)目录,因为它在使用后不会自动删除。“mkdtemp()的用户负责删除临时目录及其内容。请参阅:在python3中,您可以使用tempfile.TemporaryDirectory()作为dirpath:
执行,临时目录将在退出上下文管理器时自动清理。不需要使用module.shutil.rmtree(temp_dir.name)。在windows上使用tempfile.TemporaryDirectory()作为tmpdir:
是的好选择,因为存在不允许我进入临时目录的选项
import os
import tempfile
with tempfile.TemporaryDirectory() as tmp_dir:
# generate some random files in it
files_in_dir = os.listdir(tmp_dir)