在Python中,你可以按如下方式創建一個臨時文件:python tempfile在哪裏寫入文件?
tempfile.TemporaryFile()
然後你就可以寫它。在GNU/Linux系統中寫入的文件在哪裏?我似乎無法在/ tmp目錄或任何其他目錄中找到它。
謝謝
在Python中,你可以按如下方式創建一個臨時文件:python tempfile在哪裏寫入文件?
tempfile.TemporaryFile()
然後你就可以寫它。在GNU/Linux系統中寫入的文件在哪裏?我似乎無法在/ tmp目錄或任何其他目錄中找到它。
謝謝
上的文件句柄看着.name
確實是看到該文件存在的一種方式。在TemporaryFile
(在* NIX系統上)的情況下,您會看到<fdopen>
,表示打開的文件句柄,但沒有對應的目錄條目。如果您想保留指向底層文件的鏈接,則需要使用NamedTemporaryFile
。
如果你想控制臨時文件去,看看dir
參數:
TemporaryFile
使用mkstemp
,其允許與dir
參數設置的目錄:
如果指定了
dir
,該文件將在該目錄中創建;否則,使用默認目錄。默認目錄是從依賴於平臺的列表中選擇的,但應用程序的用戶可以通過設置TMPDIR
,TEMP
或TMP
環境變量來控制目錄位置。
file.name返回「
是的,它的確如此。 'TemporaryFile'只處理OS [文件描述符](https://en.wikipedia.org/wiki/File_descriptor),所以沒有可訪問的文件名。如果您想要一個具有可訪問路徑的文件,請使用['NamedTemporaryFile'](http://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile)。閱讀['mkstemp'](http://docs.python.org/2/library/tempfile.html#tempfile.mkstemp)的文檔將有助於揭示這一點,並緩解任何困惑。 –
@Loic:這意味着它是一個開放的文件句柄,而底層文件已經被取消鏈接。如果你需要文件名,使用'tempfile.NamedTemporaryFile()'。 –
調用tempfile.gettempdir()
function:
返回當前選擇在創建臨時文件的目錄
您可以更改臨時文件是由tempfile.tempdir
value設置爲不同的目錄中創建的,如果你想要影響創建臨時文件的位置。從文檔報價,如果該值是None
的規則如下:
如果TEMPDIR是任何上述功能的任何呼叫設置或設置爲
None
,Python的搜索目錄的標準列表,並TEMPDIR到第一個是主叫用戶可以創建文件的列表。該列表是:
- 由
TMPDIR
指定的目錄環境變量。- 由
TEMP
環境變量命名的目錄。- 由
TMP
環境變量命名的目錄。- 特定於平臺的位置:
- 在RiscOS上,由
Wimp$ScrapDir
環境變量命名的目錄。- 在Windows上,目錄
C:\TEMP
,C:\TMP
,\TEMP
和\TMP
按照該順序。- 在所有其他平臺上,按目錄
/tmp
,/var/tmp
和/usr/tmp
的順序排列。- 作爲最後的手段,當前的工作目錄。
外殼上嘗試這個
$python
>>> import tempfile
>>>tempfile.gettempdir()
'/var/folders/5r/lxh8g5ln7zg43_l_3t0j7b1c0000gn/T'
這將顯示您Python是用實際的臨時路徑。
您可以選擇嘗試此操作。 (這將產生與上面相同的結果)
$python
>>> import tempfile
>>>tempfile.tempdir
'/var/folders/5r/lxh8g5ln7zg43_l_3t0j7b1c0000gn/T'
當您調用'tempfile.gettempdir()'時,會設置'tempfile.tempdir'; 'temfile.tempdir'將從'None'開始。 –
[「在Unix下,該文件的目錄條目在創建文件後立即被刪除。」](http://docs.python.org/2 /library/tempfile.html#tempfile.TemporaryFile)。小心這個。 – user2357112
當我嘗試:mytempfile.name我得到:\t 「」 –