Profilpfad herausfinden

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'

Profilpfad herausfinden (last edited 2009-06-17 16:14:27 by localhost)