Ich arbeite an einem Teil eines Python-Projekts und die Struktur ist wie folgt: project/some_folder/another_folder/my_work
. In diesem Ordner ist die Datei mit dem Code run.py
. Im selben Ordner habe ich auch eine input_file
, von der ich einige Daten gelesen, verarbeitet, und schreibe das Ergebnis auf output_file
. So in run.py
Ich habe so etwas wie:Wie setze ich den Pfad zur Ein-/Ausgabedatei richtig?
with open("input_file") as f:
do_something()
und
with open("output_file") as f:
store_the_result()
Dies funktioniert gut, wenn ich den Code in project/some_folder/another_folder/my_work
auszuführen. Wenn ich jedoch zu project
gehen und den Code mit python -m some_folder.another_folder.my_work.run
ausführen, habe ich Probleme beim Zugriff auf die Eingabedatei. Ich habe versucht, dieses Problem zu lösen, indem ich den aboslute-Pfad zu den Dateien verwende, aber das funktioniert nur auf meinem Rechner. Wenn jemand meinen Code auf seine Maschine kopiert, muss er/sie trotzdem den fest codierten absoluten Pfad ändern.
So legen Sie den Pfad zu den Dateien so fest, dass ich das Programm entweder im Ordner mit der Eingabe- und Ausgabedatei starten oder es als Modul ausführen kann und andere den Pfad zur Datei nicht ändern müssen Code auf ihren Maschinen laufen lassen?
'module_path = os.path.dirname (os.path.realpath (__ Datei __))' funktioniert nicht für mich. Ich muss stattdessen 'module_path = os.path.dirname (os.path.realpath (" __ file __ "))' 'stattdessen verwenden. – s9527
Das ist seltsam, wenn ich '" __file __ "' (mit Anführungszeichen) verwende, dann bekomme ich das aktuelle Arbeitsverzeichnis, nicht das Modulverzeichnis. Wenn ich '" __file __ "' benutze, bekomme ich dasselbe Ergebnis wie mit '" __some_random_string __ "'. Wenn Sie sagen, dass es nicht funktioniert, meinen Sie, dass es einen Fehler gibt? –
In meinem Fall wird '" __file __ "' auch die CWD geben, aber '__file__' wirft einfach' NameError: Name '__file__' ist nicht definiert'. – s9527