我正在嘗試從我的 python 腳本打開文本編輯器,我注意到一些顯然與我對tempfile文檔的理解相矛盾的東西。我的實驗開始于 Alex Martelli 的回答。我的代碼 -import osimport tempfileimport subprocessf = tempfile.NamedTemporaryFile(mode='w+t', delete=True)n = f.nameprint('Does exist? : {0}'.format(os.path.exists(n)))f.close()print('Does exist? : {0}'.format(os.path.exists(n)))subprocess.run(['nano', n])with open(n) as f: print (f.read())print('Does exist? : {0}'.format(os.path.exists(n)))輸出:Does exist? : TrueDoes exist? : FalseHello from temp file.Does exist? : True在代碼中,我顯式調用close了用 聲明的文件對象delete=True,但即使如此,我也可以向其中寫入和讀取內容。我不明白為什么會這樣。根據文檔-如果 delete 為 true(默認值),則在關閉文件后立即將其刪除。如果調用close刪除文件,那么我不應該能夠寫入然后讀取它。但它會顯示您在執行時輸入的文件的正確內容nano。和tempfile 一樣,該文件在我打開終端并運行腳本的目錄中不可見。更奇怪的是,os.path.exists前兩次工作正常,第三次可能不正確。我在這里錯過了什么嗎?附加實驗:如果我運行以下代碼,那么我可以清楚地看到創建的文件。但這在原始代碼中不會發生。n = '.temp'subprocess.run(['nano', n])with open(n) as f: print (f.read())print('Does exist? : {0}'.format(os.path.exists(n)))
添加回答
舉報
0/150
提交
取消