2008-11-20 83 views
3

我的應用程序將一些數據緩存在磁盤上。由於緩存可能很大,因此不應將其存儲在網絡驅動器上。它應該在應用程序的調用之間持續存在。我有一個用戶選擇位置的機制,但是希望默認設置對於平臺來說是明智的和「正確的」。適用於Windows上我的應用程序緩存的位置

此類緩存的適當位置是什麼?是否有確定適當位置的API?我如何從Python中調用它?

回答

2

看看這裏:http://en.wikipedia.org/wiki/Environment_variable#User_management_variables。用戶目錄下的任何內容都很好。如果它適用於所有用戶,那麼它應該是:%ALLUSERSPROFILE%。如果它對於特定的用戶,請確保權限是正確的。

查看MSDN瞭解更多關於其他Windows版本的信息。環境變量因系統而異。

+0

我正在閱讀的是,對於普通用戶,%ALLUSERSPROFILE%文件夾是隻讀的。不確定,但這就是人們所說的... – paul 2010-01-27 10:09:23

1

也許tempfile模塊提供了你所需要的。它使用Windows Temp目錄(可能不在網絡驅動器上),但如果需要,可以指定一個目錄。同樣出於安全原因,這個模塊應該是正確的工具 - 如果您使用tempfile.mkstemp(),則該文件僅可通過創建用戶標識進行讀寫。

哦。我看到你剛剛編輯了你的問題,並且你需要在應用程序的調用之間進行文件持久化。然後tempfile不是那麼理想(即使您可以選擇不在調用之間刪除緩存)。

0

該應用程序是否有用戶可以指定的任何首選項,設置或選項?如果是這樣,請在用戶可以指定數據位置的位置添加一個選項,並使用默認的當前Windows臨時目錄。

在臨時目錄驅動器上可能沒有足夠的空間,並且需要使用其他驅動器/目錄。

3

有一些地方可以把你的應用程序文件放在Windows中。 This page顯示一個列表(這個枚舉是.Net特定的,但大多數特殊文件夾在Windows上是標準的)。基本上你需要決定你是否需要每個用戶的緩存,只適用於本地機器,每個應用程序或共享等。

我沒有太多的python經驗,所以我不能專門幫助如何獲得這些路徑,但我相信這裏有更多的知識可以。

2

%APPDATA%(當前用戶)或%ALLUSERSPROFILE%(所有用戶)環境變量引用了Windows應用程序存儲其(永久)應用程序數據的標準位置。您可以使用例如(只有簡單而不是非常優雅的錯誤檢查!):

import os 
app_path = os.getenv("APPDATA") + "\\MyApplicationData" 
try: 
    os.mkdir(app_path) 
except WindowsError: 
    # already exists 

現在你有你自己的應用程序目錄。

1

wx.StandardPaths模塊包含返回文件系統中各種標準位置的方法,並且透明地嘗試在Unix,Mac OS X和Windows下執行「正確的事情」。

相關問題