Unter UNIX gibt es das schon seit Anbeginn der Zeiten, unter Windows seit NT. Einen Profilordner für den Benutzer. Hier können Anwendungen Daten ablegen, die sie später wieder einlesen sollten. Für alle anderen Systeme wird einfach das aktuelle Verzeichnis gewählt.
Mit folgender Funktion kann man den Pfad zum Ordner herausfinden:
1 def get_home_path():
2 import os
3 if os.name == 'posix':
4 return os.environ.get('HOME')
5 elif os.name == 'nt':
6 return os.environ.get('USERPROFILE')
7 else:
8 return os.getcwd()
Allerdings gibt es hier noch einen Stolpertein. Unter UNIX Systemen muss der Dateiname mit einem Punkt beginnen (/home/benutzername/.programmname), da es sonst mit den Benutzerdateien kollidiert. Windows mag aber keine Dateinamen, die mit einem Punkt beginnen. Zudem müssen die Programmeinstellungen ins Anwendungsverzeichnis.
Folgender Code soll hier helfen:
1 def get_settings_folder(appname):
2 import os
3
4 # resolve settings folder
5 if os.name == 'posix':
6 folder = os.path.join(os.environ.get('HOME'), "." + appname.lower())
7 elif os.name == 'nt':
8 folder = os.path.join(os.environ.get('APPDATA'), appname.capitalize())
9 else:
10 folder = os.path.join(os.getcwd(), appname)
11
12 # create settings folder if necessary
13 try:
14 os.mkdir(folder)
15 except OSError:
16 pass
17
18 return folder
Diese Funktion würde folgendes zurückgeben:
1 # unter Linux, MacOS-X und anderen Unices
2 >>> get_settings_folder('myapp')
3 '/home/benutzername/.myapp'
4 # unter Windows NT/2000/XP
5 >>> get_settings_folder('myapp')
6 'C:\\Dokumente und Einstellungen\\Benutzername.DOMAIN\\Anwendungsdaten\\Myapp'