Path für das Lesen des Inputs

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
Barcellona
User
Beiträge: 74
Registriert: Dienstag 25. Mai 2010, 12:10

Hallo zusammen,

ich habe eine Frage.
Und zwar habe ich ein Programm geschrieben, das aus mehreren Teilprogrammen besteht.

Im Hauptordner liegt ein Text (.txt), den ich nun gerne aus dem ersten Teilprogramm heraus einlesen
möchte. Wie spezifiziere ich denn in dem Teilprogramm den Path aus dem gelesen wird.

Ich hab sowas wie "./Input/text.txt" in Erinnerung, gibt mir aber einen Fehler.
Ich möchte also aus dem aktuellen Verzeichnis ein Verzeichnis hochgehen, dort in Input, und dann
die Datei "text.txt" öffnen zum Lesen.

Wie mach ich das am besten? :K
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Barcellona hat geschrieben: Und zwar habe ich ein Programm geschrieben, das aus mehreren Teilprogrammen besteht.
Was meinst Du mit "Teilprogrammen"? Module?

Zu Deiner Frage: Ich würde Pfade grundsätzlich nicht in Modulen hart kodieren; wieso übergibst Du den Pfad nicht als Komandozeilenparameter? Oder Du definierst eine Konfigurationsdatei, in der der Pfad steht?

Ein Verzeichnis nach oben wechseln geht mit zwei Punkten:

Code: Alles auswählen

../Input/text.txt
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Barcellona
User
Beiträge: 74
Registriert: Dienstag 25. Mai 2010, 12:10

Ok, danke, Hyperion.

Die Idee mit der Konfigurationsdatei hat mir gefallen. Kannst du mir das näher erklären, wie die aussehen könnte?

Weil jeder User kann das Programm ja unter einem anderen Path auf seinem PC haben, müsste ich dann von dem
Hauptordner aus gesehen, den relativen Path in die Konfigurationsdatei schreiben?

Beispiel:

Code: Alles auswählen

Config:
path_subpro1=rel_path+"\subprog1"
input=rel_path+"\Input\input.txt"
So in der Art?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Was ist denn das für eine Datei? Ich meine, ist das eine Datendatei, die fix mit dem Modul / Paket zusammenhängt? Wenn man diese nicht nur Lesen, sondern auch schreiben will, sollte diese *nicht* im Paket selber stehen, da es auf vielen Systemen dort nicht ohne weiteres Schreibzugriffe gibt.

Ich glaube es gibt da keinen perfekten Weg; unter Linux ist es üblich, einen ".programm"-Ordner im Home-Verzeichnis anzulegen, in der Programm spezifische Dateien landen (u.a. auch die Konfigurationsdateien selber ;-) ). Unter Windows gibt es da analoges, aber frag mich nicht, wie es da heißt.

Eine Konfigurationsdatei an sich kann unterschiedlich aussehen. Man kann das direkt in Python machen, man kann eine Datei im INI-Format anlegen, JSON ist auch beliebt und natürlich andere Formate wie YAML oder XML. Vorteil ist, dass es für all diese Module für Python gibt.

Da das Programm nun diese Config-Datei auch wieder finden muss, lohnt sich das also nur dann, wenn da mehr als nur der Pfad zu einer benötigten Datei drin steht ;-)

Worum handelt es sich denn nun bei dieser Datei? Ich meine, ist diese wirklich immer fix oder ist sie variabel für jeden Programmdurchlauf?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten