在我的tempfile.TemporaryDirectory()中找不到Python3的文件

时间:2017-07-07 15:43:59

标签: python temp

我在使用Python3的临时文件库时遇到了麻烦。

我需要在临时目录中写一个文件,并确保它在那里。我使用的第三方软件工具有时会失败,所以我无法打开文件,我需要首先使用' while循环来验证它。或者在打开它之前的其他方法。所以我需要搜索tmp_dir(使用os.listdir()或等效的。)

评论中将会提供具体的帮助/解决方案和一般帮助。

谢谢。

小样本代码:

import os
import tempfile


with tempfile.TemporaryDirectory() as tmp_dir:

    print('tmp dir name', tmp_dir)

    # write file to tmp dir
    fout = open(tmp_dir + 'file.txt', 'w')
    fout.write('test write')
    fout.close()

    print('file.txt location', tmp_dir + 'lala.fasta')

    # working with the file is fine
    fin = open(tmp_dir + 'file.txt', 'U')
    for line in fin:
        print(line)

    # but I cannot find the file in the tmp dir like I normally use os.listdir()
    for file in os.listdir(tmp_dir):
        print('searching in directory')
        print(file)

1 个答案:

答案 0 :(得分:2)

这是预期的,因为临时目录名称不以许多系统上的路径分隔符(os.sep斜杠反斜杠)结尾。因此文件创建的级别错误。

tmp_dir = D:\Users\T0024260\AppData\Local\Temp\tmpm_x5z4tx
tmp_dir + "file.txt"
=> D:\Users\T0024260\AppData\Local\Temp\tmpm_x5z4txfile.txt

相反,join两个路径都可以在临时目录中获取文件:

fout = open(os.path.join(tmp_dir,'file.txt'), 'w')

请注意,fin = open(tmp_dir + 'file.txt', 'U')找到了预期的文件,但它找到了创建tmp_dir的同一目录。