2009-12-09 157 views
3

我有一個python模塊,它可以生成大量的數據文件,我想要在磁盤上緩存以備將來使用。對於普通用戶來說,緩存可能會達到幾百MB,但可以節省大量計算時間。python包的數據緩存

文件不與模塊一起分發,而是在第一次使用給定的一組參數運行代碼時生成的。

到目前爲止,我剛剛使用了一個單獨的文件模塊,並將它們放在相對於模塊(data /)的硬編碼路徑中。但是我現在需要將這個模塊分發到distutils的Python包中,我想知道是否有一個標準的方法來做到這一點。

我在想像scipy.weave的編譯緩存 - 但想知道是否有一個更現代的支持方式。在* nix平臺上,我希望它會在~/.something中,但我不確定相應的窗口是什麼。此外,這應該是可配置的,以便用戶可以將它指向其他地方,如果它更方便,或共享用戶之間的緩存目錄。這樣的配置文件應該如何工作?它應該去哪裏?

或者我應該只是將它作爲安裝選項,通過setup.py旁邊的配置文件或手動編輯setup.py來設置,然後在安裝之前在模塊中硬編碼目錄?

greatfully收到任何指針...

回答

3

您可以使用標準庫模塊ConfigParser來解析ini文件(或者根據你的文化rc文件)。要找到該文件,os.path.expanduser是一個有用的功能,可以在所有平臺上爲「〜/ .mytoolrc」等路徑執行正確的操作。要讓用戶覆蓋事物的位置,您可以通過os.environ使用環境變量。

+0

謝謝 - 所以我想默認是〜/ .mycache或〜/ _mycache目錄。查找〜/ .my_module或〜/ _my_module配置文件,如果存在,則從該文件中獲取目錄。然後,默認應該適用於大多數人,但它很容易配置。我寧願避免環境變量,因爲我不認爲Windows人通常喜歡設置這樣的東西。 – robince 2009-12-09 16:00:55