2010-07-14 90 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應用程序支持它。