具有自定义名称的临时文件/目录?

hel*_*rld 7 python temporary-files pytest python-unittest

如何在python中使用用户定义的名称创建临时文件/目录。我知道tempfile。但是我看不到任何以文件名作为参数的函数。

注意:我需要这个来对包含临时文件的临时目录上的 glob(文件名模式匹配)功能进行单元测试,而不是使用实际的文件系统。

j31*_*rre 6

如果您需要命名临时文件和目录,看起来您必须自己管理名称和/或创建/删除。

但是,如果您只需要控制可用于创建临时目录的文件的名称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)


Tec*_*iot 0

您可以使用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在临时目录中创建文件。