2017-07-07 65 views
3

我在使用Python3的tempfile庫時遇到問題。在Python3的tempfile.TemporaryDirectory()中找不到文件

我需要在臨時目錄中寫入文件,並確保它在那裏。我使用的第三方軟件工具有時會失敗,所以我不能打開文件,我需要在打開文件之前首先使用'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) 

回答

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被創建的目錄。