2010-07-14 67 views

回答

4

尝试:

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

在Linux上,这将返回:

>>> import os 
>>> os.path.expanduser('~/.programname') 
'/home/user/.programname' 

在Windows上,将返回:

>>> import os 
>>> os.path.expanduser('~/.programname') 
'C:\\Documents and Settings\\user/.programname' 

这是一个小丑陋的,所以你”可能会想这样做:

>>> import os 
>>> os.path.join(os.path.expanduser('~'), '.programname') 
'C:\\Documents and Settings\\user\\.programname' 

编辑:对于它的价值,我的Windows机器上的以下应用程序在我Documents and Settings\user文件夹中创建自己的配置文件夹:

  • 的Android
  • AgroUML
  • 瘸子
  • IPython的

编辑2:哇,我只是注意到我把/user/.programname而不是/home/user/.programname为linux例子。固定。

+1

“哪个有点丑陋[。]”虽然工作得很好。 – JAB 2010-07-14 20:39:54

0

通常,Windows上的程序的配置和数据文件会进入%APPDATA%目录(或应该),通常位于具有程序名称的子目录中。 “%APPDATA%”当然只是一个映射到当前用户的Application Data文件夹的环境变量。我不知道,如果它存在于Linux的(虽然我认为事实并非如此),所以做跨平台(Windows/Linux的/ MacOS的)...

import os 

if 'APPDATA' in os.environ.keys(): 
    envar = 'APPDATA' 
else: 
    envar = 'HOME' 

configpath = os.path.join(os.environ[envar], '.programname') 
7

在Windows上,它存储在os.environ['APPDATA']。但是,在Linux上,现在推荐将配置文件存储在os.environ['XDG_CONFIG_HOME']中,默认为~/.config。因此,例如,建立在JAB的例子:

if 'APPDATA' in os.environ: 
    confighome = os.environ['APPDATA'] 
elif 'XDG_CONFIG_HOME' in os.environ: 
    confighome = os.environ['XDG_CONFIG_HOME'] 
else: 
    confighome = os.path.join(os.environ['HOME'], '.config') 
configpath = os.path.join(confighome, 'programname') 

的XDG基本目录标准的创建,这样的配置可以全部放在一个地方而不会弄乱点文件的主目录。大多数新的Linux应用程序支持它。