0

Cygwin のコマンド プロンプトから python (2.7) を実行しています。通常、ファイル名を Python コードに渡し、sys.argv[1] でファイル名を取得します。開く前に(os.path.existsを使用して)ファイルの存在を確認するようにpythonを取得します。

ファイルを「../dir1/dir2/file_name」として指定しても、これは機能しました。今日の時点で、ファイル名にパスが含まれている場合、Python はファイルを見つけることができません (それらはすべて存在しますが)。

例: dir_1 というディレクトリにある prog.py の場合

 python prog.py          file.txt     :::: works OK

 python prog.py ../dir_1/file.txt     :::: Fails

 >pwd
  ......../dir_1

「そのようなファイルまたはディレクトリはありません」というエラーが表示され続けます。私はPythonに探しているファイルを出力させ、それですべてOKです(ただし、../などは絶対パス名に変わりました)。

どこかで何かが壊れているような気がします。何か案は?

ラス

4

3 に答える 3

0

os.path.exists()は、引数として渡すパスが存在するかどうかを確認しませんか?ファイルが存在するかどうかを確認しようとしていますか?

于 2012-05-18T03:49:47.180 に答える
0

Pythonは「チルダ」のようなUnixショートカットを理解しないというのが私の理解です。

~/Downloads

動作しませんが、これは次のようになります。

/home/Castro/Downloads

これで問題は解決しますか?

于 2012-05-20T16:51:24.347 に答える
0

これらの相対参照を適切な拡張パスに解決する必要があります。

import os

relative = "../"
print os.path.abspath(relative)
# /Users/jdi

何も解決する必要がないため、現在のディレクトリにあるファイルで問題なく動作します。ただし、シェル パスを展開する必要があります。

于 2012-05-18T03:42:05.267 に答える