python会话持续的设置值

问题描述:

我想在我的脚本中定义一个常量,就像我的Dropbox文件夹的路径。大多数我的脚本会尝试加载一些在我的PC*享的Dropbox数据,但我发现Mac和Ubuntu之间的前缀不同(/Users/<user>/Dropbox/home/<user>/Dropbox)。python会话持续的设置值

有没有办法将这种信息保存在每个会话中加载的变量中,这样我就可以拥有像DROPBOX这样的全局变量(作为一个很好的约定,__DROPBOX__?)作为路径前缀给一个文件名,例如fname = DROPBOX + "myfile.txt"

有点让我想起在.Rprofile中定义这个,它保存着R中的设置。

还是有更好的方法来处理这个问题吗?

+0

见http://*.com/questions/13887798/saving-and-recovering-values-变数之间的执行 – user3757614 2014-10-01 21:11:44

+0

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

你可以使用内置的环境变量,以获得用户的主目录的路径:

import os 
print os.environ['HOME'] 

这将解决你的问题的方式,更有可能出现在新机器上运行,以保持稳定。

+0

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

+0

然后,不得不导入os并使用那个长名称仍然不是首选。我想我应该只是与相对路径工作不幸。 – PascalVKooten 2014-10-01 21:18:22

如何:

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