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

时间:2016-09-20 11:09:18

标签: python pytest temporary-files python-unittest

如何在python中创建具有用户定义名称的临时文件/目录。我知道tempfile。但是,我无法看到任何带有filename作为参数的函数。

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

2 个答案:

答案 0 :(得分:0)

您可以将open()用于您需要的任何文件名。

e.g。

open(name, 'w')

Open

或者

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)

或者您可以使用mkdtemp创建临时目录,然后使用open在临时目录中创建文件。

答案 1 :(得分:0)

我几乎更喜欢使用 NamedTemporaryFile() 以这种复杂的方式编写,而不是使用 open(),因为我真的想强调这是一个临时文件:

import tempfile, os

with tempfile.NamedTemporaryFile() as temp_fp:
    os.rename(temp_fp.name, '/tmp/my_custom_name.txt')
    # do stuff here ...

    # do stuff here END ...
    os.rename('/tmp/my_custom_name.txt', temp_fp.name) # finally, rename back
    

我们需要重新命名,因为: update file descriptor after os.rename()