2016-05-25 3 views
-1

私はwith open('myFile', 'rb') as file:を使用してファイルを読み取ります。 python myProgram.pyでプログラムを実行するとすべて正常に動作します。しかし、すぐに私は常に、このエラーメッセージを取得python /home/myName/myCode/myProgram.pyのような(myProgram.pyのディレクトリに-ing cdせずにそれを実行し、代わりに絶対パスを使用するようにしてください:。FileNotFoundError: [Errno 2] No such file or directoryopen()を使用した場合のPython FileNotFoundError

なぜopen()振る舞いが違ったかのPythonに依存しませんプログラムが開始されたか、そして物事が絶対パスで始まる場合でも動作させるための方法はありますか?

私はすでに、なぜ()オープン振る舞うんopen('/home/myName/myCode/myfile', 'rb')が、成功せず...

+0

あなたはファイルがあなたが思うところにいると確信していますか? –

+1

プログラムを実行できるディレクトリに 'pwd'を実行します。結果を投稿する – WildCard

+0

あなたは完全なトレースバックも提供するべきです – WildCard

答えて

1

を試してみましたどのようにPythonプログラムが起動しましたか?絶対パスで開始しても動作させる方法はありますか?

これは標準的な動作であるためです。 Pythonのためだけでなく、すべてのアプリケーション(少なくとも私が知っているすべてのアプリケーション)のために。相対パス( 'myfile'など)は、現在のディレクトリにあるとみなされます。そのパスは、シェルからスクリプトを起動するときにあなたが座っているディレクトリによって変わります。絶対パスを指定しないと、Pythonはどのようなファイルをこのようなディレクトリ構造で使用するのかを知りますか?

root 
|-- dir1 
| `-- myFile 
`-- dir2 
    `-- myFile 

あなたはopen('/home/myName/myCode/myfile', 'rb')で正しいトラックにいました。

+0

ありがとう、これは完全に理にかなっています。私は 'open( '/ home/myName/myCode/myfile'、 'rb')'で再度試してみました。 – lysigk

0

pwdを実行して、/home/myNameを返したとします。 /home/myName/code/myProgram.pyを実行すると、プログラムの作業ディレクトリはではなく、/home/myName/codeとなります。それは/home/myNameです。親プロセスから継承したプロセスの作業ディレクトリ。スクリプトの格納場所に基づいて設定されません。

関連する問題