Wie mit listdir() auf einen "übergeordneten" Ordner zugreifen?

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
Hillson
User
Beiträge: 22
Registriert: Dienstag 15. Mai 2018, 08:36

Moin,

ich definiere mal kurz eine Ordnerstruktur, um daran mein Anliegen zu erläutern. Es gibt Ordner1, Ordner2 und Ordner3. Ordner2 und Ordner3 befinden sich in Ordner1. In Ordner2 befindet sich ein Python Script und in Ordner3 befinden sich Bilder.

Von dem Script aus Ordner2 sollen nun die Bilder aus Ordner3 geladen werden. Er findet aber aus dem Ordner2 heraus den Ordner3 nicht. Selbst wenn ich den kompletten Pfad einfüge funktioniert es nicht.
Das Script war vorher auf der gleichen Ebenen wie Ordner3 und da habe ich mit listdir('Ordner3/') ganz einfach auf den Ordner zugreifen können. Nun möchte ich aber Ordnung in meine Ordnerstruktur bringen und dazu muss das Script in Ordner2.

Vielen Dank für die Hilfe.
Beste Grüße
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

mit absoluten Pfaden müssen die Dateien auf jeden Fall gefunden werden. Zeig doch, was Du versucht hast.
Hillson
User
Beiträge: 22
Registriert: Dienstag 15. Mai 2018, 08:36

Code: Alles auswählen

files = listdir('Users/tobiashilbert/Documents/Dokumente - Tobiass iMac/Studium/Master/Trimester 12/Masterarbeit/code/Classification/Images/Original/Train/')
Da ist jetzt nicht so viel zu zeigen. Das wäre der Code mit absolutem Pfad. Und da bekomme ich den Fehler:

FileNotFoundError: [Errno 2] No such file or directory: 'Users/tobiashilbert/Documents/Dokumente - Tobiass iMac/Studium/Master/Trimester 12/Masterarbeit/code/Classification/Images/Original/Train/'

Den Pfad habe ich einfach aus der Informationen eines Bildes kopiert.
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na das ist ja auch ein relativer Pfad - erkennbar an dem fehlenden slash am Anfang. Es muss schon "/Users/tobiashilbert/...." heissen.
Hillson
User
Beiträge: 22
Registriert: Dienstag 15. Mai 2018, 08:36

Vielen Dank jetzt funktioniert es. Gibt es da noch eine elegantere Lösung als den absoluten Pfad zu verwenden?
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Ja, ein klar definierter relativer Pfad. Das ist dann auch portabel.
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ein beliebter weg ist sich an der __file__ Variablen lang zu hangeln. Die gibt für jedes Modul/Skrip an, welchen Pfad es hat. Wenn deine Daten relativ dazu fix sind, kannst du einen Pfad zusammen bauen.

Und ggf natürlich einfach argparse nutzen, und den Pfad beim Aufruf angeben.
Antworten