Hallo Leute!
Wollte mal wieder etwas mit python rumspielen und verzeichnisse auslesen
und testen, ob die dinge, die ich in verzeichnissen finde verzeichnisse oder
dateien sind.
ich dachte ich hätte verstanden, wie python pfade haben möchte, aber
irgendwie bin ich nun total durcheinander.
kann mir jemand kurz erklären, wann ich in python nun
/mein_unterstes/verzeichnis/spam/eggs/bla.eggs
benutze und wann
'
C:\foobar\etc\pp.eggse ??
z.B. will doch open() die erste variante haben, aber
os.path.listdir() liefert mir z.B. die zweite Variante zurück.
wie konvertiere ich mir dir pfade so, dass ich sie benutzen kann?
sorry, ziemlich allgemeine frage....aber immer, wenn ich denke, ich hab's
verstanden, dann funzt es wieder nicht.
ACHJA:
wenn ich verzeichnisse mit os.path.listdir() auslese und danach
für jeden eintrag prüfe, ob's ein verzeichnis oder datei ist, liefern
mir os.path.isdir() oder os.path.isfile() immer false zurück egal, ob
ich sie in einen absoluten pfad umwandle oder nicht.
Ihr ahnt es, ich bin total verwirrt....bringt bitte Licht in mein Dunkel! )
danke!
verzeichnisnamen und python - versthe die welt gerade nicht.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Das eine ist eben die Unix-Notation, das andere die Windows-Notation. Um Plattform unabhängig zu coden, gibt es in os.path zig nützliche Funktionen. Vor allem join() wäre hier zu empfehlen.
Zum zweiten Probelm: Poste doch mal genau Deinen Code hier. Kann mir im Moment nur vorstellen, dass Dein Pfad schlicht falsch ist und sich dort eben keine Datei oder Verzeichnis befindet.
"test" gibt es bei mir dort definitiv nicht.
Zum zweiten Probelm: Poste doch mal genau Deinen Code hier. Kann mir im Moment nur vorstellen, dass Dein Pfad schlicht falsch ist und sich dort eben keine Datei oder Verzeichnis befindet.
Code: Alles auswählen
>>> isfile("test")
False
@borgus: Python ist das alles herzlich egal weil die Zeichenketten einfach an das Betriebssystem weiter gegeben werden. Und die Windows-API erlaubt eigentlich immer beide Arten von Schrägstrichen.
`os.path.listdir()` gibt's gar nicht, Du meintest vielleicht `os.listdir()`!?
Das liefert gar keine Pfade, sondern nur Dateinamen. Wenn Du daraus einen absoluten Pfad machen willst, zum Beispiel mit `os.path.abspath()` musst Du natürlich noch den Pfad davor hängen, den Du bei `os.listdir()` als Argument übergeben hast. Woher sollte die Funktion sonst auch wissen in welchem Verzeichnis die Datei mit dem Namen liegt!?
`os.path.listdir()` gibt's gar nicht, Du meintest vielleicht `os.listdir()`!?
Das liefert gar keine Pfade, sondern nur Dateinamen. Wenn Du daraus einen absoluten Pfad machen willst, zum Beispiel mit `os.path.abspath()` musst Du natürlich noch den Pfad davor hängen, den Du bei `os.listdir()` als Argument übergeben hast. Woher sollte die Funktion sonst auch wissen in welchem Verzeichnis die Datei mit dem Namen liegt!?
Hi! Danke schonmal für eure Antworten!
Hier ist ein beispielcode, wie ich's mir denke, dass es funzen sollte:
Das Ergebnis ist:
C:\DLLs was anderes
C:\Doc was anderes
C:\include was anderes
C:\Lib was anderes
C:\libs was anderes
C:\LICENSE.txt was anderes
C:\NEWS.txt was anderes
C:\PIL-wininst.log was anderes
C:\python.exe was anderes
C:\pythonw.exe was anderes
C:\README.txt was anderes
C:\RemovePIL.exe was anderes
C:\Scripts was anderes
C:\tcl was anderes
C:\Tools was anderes
C:\w9xpopen.exe was anderes
[/quote]
@BlackJack sorry, war ein Tippfehler..
Was meint ihr dazu?
Hier ist ein beispielcode, wie ich's mir denke, dass es funzen sollte:
Code: Alles auswählen
import os.path
import os
for i in os.listdir('c:\python25'):
i = os.path.abspath(i)
if os.path.isdir(i):
print i, ' is a dir'
else: print i, ' was anderes'
C:\DLLs was anderes
C:\Doc was anderes
C:\include was anderes
C:\Lib was anderes
C:\libs was anderes
C:\LICENSE.txt was anderes
C:\NEWS.txt was anderes
C:\PIL-wininst.log was anderes
C:\python.exe was anderes
C:\pythonw.exe was anderes
C:\README.txt was anderes
C:\RemovePIL.exe was anderes
C:\Scripts was anderes
C:\tcl was anderes
C:\Tools was anderes
C:\w9xpopen.exe was anderes
[/quote]
@BlackJack sorry, war ein Tippfehler..
Was meint ihr dazu?
Dazu meine ich Du solltest nochmal lesen was ich und Hyperion geschrieben haben und ein wenig überlegen vielleicht. Alleine die Pfade, die ausgegeben werden, hätten Dich schon mal überlegen lassen sollen.