私はPythonプロジェクトの一部に取り組んでおり、その構造は次のようなものです: project/some_folder/another_folder/my_work
。入出力ファイルのパスを正しく設定する方法は?
このフォルダでは、コードを含むファイルはrun.py
です。 同じフォルダには、input_file
もあります。そこからデータを読み込んで処理し、結果をoutput_file
に書き込みます。
with open("input_file") as f:
do_something()
と
with open("output_file") as f:
store_the_result()
私はproject/some_folder/another_folder/my_work
でコードを実行すると、これが正常に動作します: だからrun.py
で私のようなものを持っています。 しかし、私がproject
に行き、python -m some_folder.another_folder.my_work.run
を使ってコードを実行すると、入力ファイルにアクセスするのが難しくなります。 ファイルへのabosluteパスを使用してこの問題を解決しようとしましたが、これは自分のマシンでのみ機能します。誰かが自分のマシンに自分のコードをコピーしても、ハードコードされた絶対パスを変更する必要があります。
入力ファイルと出力ファイルを含むフォルダでプログラムを起動するか、モジュールとして実行するようにファイルへのパスを設定する方法と、ファイルへのパスを変更する必要はありませんマシン上でコードを実行していますか?
'module_path = os.path.dirname(os.path.realpath(__ file __))'は私にとっては機能しません。代わりに 'module_path = os.path.dirname(os.path.realpath(" __ file __ "))'を使用する必要があります。 – s9527
これは奇妙です。私が '' __file __ "'(引用符を使用)を使用すると、モジュールディレクトリではなく、現在の作業ディレクトリが得られます。さらに、 '' __file __ "'を使うと '' __some_random_string __ "'と同じ結果が得られます。それがうまくいかないと言ったら、それはエラーを投げることを意味しますか? –
私のケースでは、 '' __file __ "'もCWDを与えますが、 '__file__'は単に' NameError:name '__file__' not defined'をスローします。 – s9527