2011-06-20 48 views
1

Python模塊tempfile包含NamedTemporaryFileTemporaryFile。前者的文件說什麼是NamedTemporaryFile在Windows上有用?

該名稱是否可以用來打開該文件第二次,而命名的臨時文件仍然是開放的,跨平臺的變化(也可以這麼用在Unix,它不能Windows NT或更高版本)

如果我不能使用該名稱,該文件的名稱是什麼?如果我想在Windows上對Unix有用(對我來說),我必須複製代碼並翻出所有表示if _os.name == 'nt'之類的位。

什麼給?當然,這對於某些東西是有用的,因爲它是以這種方式刻意編碼的,但那是什麼?

回答

7

它聲明,第二次訪問它仍然是打開。您仍然可以使用該名稱,否則創建NamedTemporaryFile時一定要通過delete=False,以便在關閉後它仍然存在。

1

你不想「撕掉所有的位......」。它的編碼是有原因的。它說你不能在第二次開放的時候打開它。別。只需使用一次,然後將其扔掉(畢竟,這是一個臨時文件)。如果你想要一個永久文件,創建你自己的文件。

「當然這對於某些東西是有用的,因爲它是以這種方式刻意編碼的,但那是什麼東西」。那麼,我已經使用它將郵件寫入(以二進制格式),然後將它們複製到我們的Exchange Server拾取它們的位置&發送它們。我確定還有很多其他用例。

+0

但是這個用例也被非Windows行爲所滿足......基本上,你可以在Windows *上做任何你可以做的事情*在文件打開時重新打開文件。這意味着可以使用'delete = True'來清理。所以我想不是沒用,只是沒那麼有用。 – Max

0

我敢肯定,Python庫編寫者並不只是決定讓NamedTemporaryFile在Windows上表現出不同的笑聲。由於Windows和Unix之間的平臺差異,所有那些_os.name == 'nt'測試將在那裏。所以我從那個文檔的推論是,在Windows上打開一個文件的方式NamedTemporaryFile打開它不能被再次打開,而NamedTemporaryFile仍然有它打開,並且這是由於方式Windows的作品。

相關問題