hel*_*rld 7 python temporary-files pytest python-unittest
如何在python中使用用户定义的名称创建临时文件/目录。我知道tempfile。但是我看不到任何以文件名作为参数的函数。
注意:我需要这个来对包含临时文件的临时目录上的 glob(文件名模式匹配)功能进行单元测试,而不是使用实际的文件系统。
如果您需要命名临时文件和目录,看起来您必须自己管理名称和/或创建/删除。
但是,如果您只需要控制可用于创建临时目录的文件的名称tempfile.TemporaryDirectory(),请在该目录中创建命名文件,然后当它脱离上下文时,它将全部被删除。
像这样:
with tempfile.TemporaryDirectory() as temp_dir:
# open your files here
named_file = open(os.path.join(temp_dir, "myname.txt"), 'w')
# do what you want with file...
# directory and files get automatically deleted here...
Run Code Online (Sandbox Code Playgroud)
附加示例:
>>> import tempfile
>>> t = tempfile.TemporaryDirectory()
>>> print(t)
<TemporaryDirectory '/tmp/tmpqign52ry'>
>>> print(t.name)
/tmp/tmpqign52ry
Run Code Online (Sandbox Code Playgroud)
您可以使用open()任何您需要的文件名。
例如
open(name, 'w')
Run Code Online (Sandbox Code Playgroud)
或者
import os
import tempfile
print 'Building a file name yourself:'
filename = '/tmp/guess_my_name.%s.txt' % os.getpid()
temp = open(filename, 'w+b')
try:
print 'temp:', temp
print 'temp.name:', temp.name
finally:
temp.close()
# Clean up the temporary file yourself
os.remove(filename)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用创建临时目录mkdtemp,然后使用open在临时目录中创建文件。