Gibt es einen Objekttyp für Dateien, Verzeichnisse, Symlinks und Mountpoints?
Wie bestimmt beispielsweise os.path.isdir() den Typ directory?
Objekttyp für Dateien und Verzeichnisse?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Unter Unix ist theoretisch alles eine Datei. Also sind Dateien, Verzeichnisse und Symlinks Dateien. Mountpoints sind normale Ordner. Du kannst verschiedenes (alos Devices, andere Ordner, FUSE-Dateisysteme) in Ordner mounten die dann den vorherigen Inhalt des Ordners "überdecken".droptix hat geschrieben:Gibt es einen Objekttyp für Dateien, Verzeichnisse, Symlinks und Mountpoints?
Ganz kurz, etwa so:droptix hat geschrieben:Wie bestimmt beispielsweise os.path.isdir() den Typ directory?
Code: Alles auswählen
import os, stat
stat.S_ISDIR(os.stat('dein_pfad').st_mode)
Code: Alles auswählen
def isdir(s):
"""Return true if the pathname refers to an existing directory."""
try:
st = os.stat(s)
except os.error:
return False
return stat.S_ISDIR(st.st_mode)
Code: Alles auswählen
def S_ISDIR(mode):
return S_IFMT(mode) == S_IFDIR
Code: Alles auswählen
def S_IFMT(mode):
return mode & 0170000
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wieso sollte es den geben? Wenn du eine Datei zum editieren brauchst, dann nutzt du file(), und Ordner werden sowieso nie direkt editiert.droptix hat geschrieben:Also gibt's in Pyhton keinen vorgefertigten Objekttyp für Dateien und Verzeichnisse?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Wieso? Weil ich Interesse daran habe ein Dateisystem testweise als verknüpfte Objekte widerzuspiegeln. Ich möchte probieren, ob sich damit sinnvoll arbeiten lässt.
Im Kopf habe ich sowas Ähnliches wie XML-Knoten. Ein Verzeichnis ist ein Knoten mit dem Attribut name. Ein weiteres Attribut parent ist analog zu XML der Elternknoten (parentNode), also das übergeordnete Verzeichnis. Der Knoten files ist eine Liste aller Kinderknoten (childNodes) mit type="file". Das Attribut dirs ist hingegen eine Liste aller Kinderknoten mit type="dir" — enthält also Verweise auf Unterverzeichnisse.
Analog was Ähnliches zu Dateien. Dateien könnten neben name und dir auch die Attribute size und mtime besitzen...
Sowas in der Art halt. Ich muss mir ja nicht die Mühe machen, wenn's sowas schon gibt.
Im Kopf habe ich sowas Ähnliches wie XML-Knoten. Ein Verzeichnis ist ein Knoten mit dem Attribut name. Ein weiteres Attribut parent ist analog zu XML der Elternknoten (parentNode), also das übergeordnete Verzeichnis. Der Knoten files ist eine Liste aller Kinderknoten (childNodes) mit type="file". Das Attribut dirs ist hingegen eine Liste aller Kinderknoten mit type="dir" — enthält also Verweise auf Unterverzeichnisse.
Analog was Ähnliches zu Dateien. Dateien könnten neben name und dir auch die Attribute size und mtime besitzen...
Sowas in der Art halt. Ich muss mir ja nicht die Mühe machen, wenn's sowas schon gibt.
Das wäre aber keine Sinnvolle XML-Struktur. Wenn schon, dann sowas
Code: Alles auswählen
<dir name="/">
<file name="foo"/>
<file name="bar"/>
<dir name="baz">
<file name="blubb"/>
</dir>
<dir name="blubb2"/>
</dir>
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Sowas ist ja leicht selbst zu schreiben.
Es gibt bereits eine Klasse für Pfade (die allerdings nicht unbedingt existierende Dateien und Verzeichnisse darstellt) -- suche nach path.py.
Es gibt bereits eine Klasse für Pfade (die allerdings nicht unbedingt existierende Dateien und Verzeichnisse darstellt) -- suche nach path.py.