Objekttyp für Dateien und Verzeichnisse?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Gibt es einen Objekttyp für Dateien, Verzeichnisse, Symlinks und Mountpoints?

Wie bestimmt beispielsweise os.path.isdir() den Typ directory?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

droptix hat geschrieben:Gibt es einen Objekttyp für Dateien, Verzeichnisse, Symlinks und Mountpoints?
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:Wie bestimmt beispielsweise os.path.isdir() den Typ directory?
Ganz kurz, etwa so:

Code: Alles auswählen

import os, stat
stat.S_ISDIR(os.stat('dein_pfad').st_mode)
Nun wie es in genericpath.py gelöst wird:

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)
stat.S_ISDIR ist in stat.py so definiert:

Code: Alles auswählen

def S_ISDIR(mode):
    return S_IFMT(mode) == S_IFDIR
Wobei S_IFDIR gleich 0040000 ist und S_IFMT so aussieht.

Code: Alles auswählen

def S_IFMT(mode):
    return mode & 0170000
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Also gibt's in Pyhton keinen vorgefertigten Objekttyp für Dateien und Verzeichnisse?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

droptix hat geschrieben:Also gibt's in Pyhton keinen vorgefertigten Objekttyp für Dateien und Verzeichnisse?
Wieso sollte es den geben? Wenn du eine Datei zum editieren brauchst, dann nutzt du file(), und Ordner werden sowieso nie direkt editiert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Wieso? Weil ich Interesse daran habe ein Dateisystem testweise als verknüpfte Objekte widerzuspiegeln. :D 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.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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>
Benutzeravatar
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.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten