2014-10-01 77 views
0

我想在我的腳本中定義一個常量,就像我的Dropbox文件夾的路徑。大多數我的腳本會嘗試加載一些在我的PC中共享的Dropbox數據,但我發現Mac和Ubuntu之間的前綴不同(/Users/<user>/Dropbox/home/<user>/Dropbox)。python會話持續的設置值

有沒有辦法將這種信息保存在每個會話中加載的變量中,這樣我就可以擁有像DROPBOX這樣的全局變量(作爲一個很好的約定,__DROPBOX__?)作爲路徑前綴給一個文件名,例如fname = DROPBOX + "myfile.txt"

有點讓我想起在.Rprofile中定義這個,它保存着R中的設置。

還是有更好的方法來處理這個問題嗎?

+0

見http://stackoverflow.com/questions/13887798/saving-and-recovering-values-變數之間的執行 – user3757614 2014-10-01 21:11:44

+0

@ user3757614糟糕的例子,我知道酸洗當然不是要走的路。 – PascalVKooten 2014-10-01 21:13:32

回答

2

你可以使用內置的環境變量,以獲得用戶的主目錄的路徑:

import os 
print os.environ['HOME'] 

這將解決你的問題的方式,更有可能出現在新機器上運行,以保持穩定。

+0

非常好,知道肯定有東西。 – PascalVKooten 2014-10-01 21:15:59

+0

然後,不得不導入os並使用那個長名稱仍然不是首選。我想我應該只是與相對路徑工作不幸。 – PascalVKooten 2014-10-01 21:18:22

0

如何:

os.path.expanduser('~/Dropbox') 

或者你可以嘗試不同的選擇:

dirs_to_try = ('/Users/Guido/Dropbox', '/home/Guido/Dropbox') 
for path in dirs_to_try: 
    if os.path.isdir(path): 
     break 
finally: 
    print 'cannot find Dropbox directory' 
    path = None 
+0

我的意思是......一種方法是將其設置爲全局函數,但是我仍然基本上希望它在任何Python會話中都可用,從此開始。首先就是這個問題。 – PascalVKooten 2014-10-02 07:38:18