Seite 1 von 1
Ordner/Dateien verstecken
Verfasst: Samstag 16. Oktober 2010, 15:15
von anogayales
Hallo liebe Community!
Ich bin gerade dabei ein Skript zu schreiben, das viele Konfigurationsdateien im Benutzterverzeichnis erstellt. Nun möchte ich diese Dateien verstecken in dem ich sie in einen Ordner packe und den Ordner "verstecke".
In der Standardbib hab ich leider nichts gefunden, deswegen denke ich wohl, dass ich was eigenes schustern muss. Unter Linux werden Ordner ja mit einem ".name" versteckt. Under Windows hingegen klappt das nicht.
Nun hab ich bisher das gemacht: Nur für den Windowsfall. Den Linuxfall wird bereits mit dem Dateinamen abgedeckt:
Code: Alles auswählen
import os, subprocess, shlex
filename = "test"
if os.name == "nt":
args = shlex.split("attrib -h " + filename)
subprocess.Popen(args)
Wie schreibt ihr euren Betriebsystem abhängigen Code? Geht's noch pytonischer?
Grüße,
anogayales
Re: Ordner/Dateien verstecken
Verfasst: Samstag 16. Oktober 2010, 15:19
von Hyperion
Unter Windows gibst doch ein extra Verzeichnis "Anwendungsdaten" o.ä. innerhalb des Benutzer-Ordners? Ich denke der beste Weg wäre es, den Ordner entsprechend dort abzulegen, ohne irgend welche Verrenkungen für das "Verstecken".
Re: Ordner/Dateien verstecken
Verfasst: Samstag 16. Oktober 2010, 15:26
von anogayales
Stimmt jetzt wo du's sagst! Dazu brauch man doch die win32 api oder?
Re: Ordner/Dateien verstecken
Verfasst: Samstag 16. Oktober 2010, 15:34
von Hyperion
Ich hätte mal zunächst in os.environ nachgeguckt. Evtl. bekommt man das auch da her?
Re: Ordner/Dateien verstecken
Verfasst: Samstag 16. Oktober 2010, 15:35
von DasIch
Der Ordner ist %APPDATA% und unter Linux versteckt man nicht einfach Ordner sondern packt sie in XDG_CONFIG_HOME oder wie auch immer es heisst, zumindest gibt es da einen Freedesktop Standard zu.
Re: Ordner/Dateien verstecken
Verfasst: Samstag 16. Oktober 2010, 15:40
von Hyperion
DasIch hat geschrieben:... zumindest gibt es da einen Freedesktop Standard zu.
Hier der Link:
http://standards.freedesktop.org/basedi ... 01s03.html
Ich habe unter Ubuntu übrigens kein "$XDG_CONFIG_HOME"; aber da seht ja, wie man es dann handhaben soll

Re: Ordner/Dateien verstecken
Verfasst: Samstag 16. Oktober 2010, 16:21
von anogayales
So, ich hab jetzt mal auf die Schnelle was hingezaubert
Code: Alles auswählen
settings_folder = os.path.join(self.get_default_folder(), ".settings")
if os.name == "posix":
try:
if os.path.isdir(os.environ["XDG_DATA_HOME"]):
settings_folder = os.path.join(os.environ["XDG_DATA_HOME"], "Application")
except KeyError:
pass
if os.name == "nt":
try:
if os.path.isdir(os.environ["appdata"]):
settings_folder = os.path.join(os.environ["appdata"], "Application")
except KeyError:
pass
Habt ihr eine bessere Lösung? self.get_default_folder() gibt einem das Home + "Application" dir aus.
Grüße
anogayales
Re: Ordner/Dateien verstecken
Verfasst: Samstag 16. Oktober 2010, 17:13
von fhoech
Vielleicht so? (für Python >= 3 dann das .decode() weglassen)
Code: Alles auswählen
import os
import sys
def get_config_dir(platform=sys.platform, appname="MyApp"):
dirs = {"darwin": os.path.expandvars("$HOME/Library/Preferences"),
"linux2": os.getenv("XDG_CONFIG_HOME",
os.path.expandvars("$HOME/.config")),
"win32": os.getenv("appdata")}
return os.path.join(dirs[platform].decode(sys.getfilesystemencoding()),
appname)