2014-12-05 53 views
0

我已經寫了一個Python包hwrt,它附帶一個model.tar文件。文件本身和內容都不會影響用戶(他們可以看一下,這不是祕密 - 但他們不需要它)。我在哪裏可以從Python包中存儲解壓縮的程序文件?

我需要使用該檔案中的文件。爲此,我提取內容並與它們一起工作:

import tarfile 
tar = tarfile.open('model.tar in python package') 
tar.extractall() 
tar.close() 
[... work with those files ...] 

This works。但是,我發現這種方法有兩個問題:

  1. model.tar每次都會被提取出來。
  2. 包含的文件被放置在當前工作目錄中,用戶可能不會期望這些文件。

要解決問題(2),在我看來,在tempfile.gettempdir()中創建臨時文件夾將是最乾淨的解決方案。但是,我不確定這是否應該完成這個工作。

是否有其他存檔格式,我可以直接訪問存檔的內容?有沒有一個目錄可以在安裝後爲我的Python包(所有用戶)放置文件?

+0

請使用'with'語句打開文件。 – Veedrac 2014-12-05 13:14:02

+0

'tempfile.gettempdir'對我來說看起來很好,但爲什麼你不能在tarfile *是*的地方解壓tarfile? – Veedrac 2014-12-05 13:15:42

+0

''model.tar''內容真的是暫時的嗎?據我瞭解,你會經常訪問這些內容。我對嗎? – 2014-12-05 13:26:42

回答

0

如果文件只有~10MB,只要將它讀入RAM即可。您以後的數千次訪問將會感謝您。

如果你想只解開第一次,你有幾種選擇:

  • 打開包裝在安裝時到源代碼目錄

  • 拆開一旦進入本地.cache目錄

如果您可以承受一次運行每次運行,請使用tempfile.gettempdir

+0

>「如果文件只有~10MB,就把它讀入RAM中,以後幾千次訪問會感謝你。」 這就是我所做的。 – 2014-12-05 13:54:11

+0

>「安裝時解包到源目錄中」 它是否保證可寫? – 2014-12-05 13:54:48

+1

@moose這將不允許您在運行時更改目錄,但您可以在安裝時編寫目錄,因爲根據定義,您已經可以訪問它。 – Veedrac 2014-12-05 14:06:35

相關問題