(Pythonは)なぜ私は常にファイル関数内の絶対パスを入力する必要がありますか?

StackOverflow https://stackoverflow.com/questions/2615526

  •  26-09-2019
  •  | 
  •  

質問

たとえば、私が持っている場合:
C:\ 42 \ main.py
そして、
C:\ 42 \ INFO.TXT
そして、私はmain.pyからINFO.TXT読みたい、私は入力する必要があります "C:\ 42 \ INFO.TXT" だけ "INFO.TXT" のinstadを

これは
?そのようなことになっています そうでない場合、どのように私はそれを修正することができますか?

役に立ちましたか?

解決

あなたは、あなたのスクリプトがどこにあるの相対パスを指定することができます。ユニットテストを書くとき、私はそれをすべての時間を行う。

__file__ - - その店そのファイルへのパスすべてのpythonファイルには、特別な属性を持っています。

py_file= os.path.abspath(__file__) # path to main.py
py_dir = os.path.dirname(py_file) # path to the parent dir of main.py
txt_file = os.path.join(py_dir, 'info.txt') # path to info.txt

他のヒント

はそのようなことになっています。相対パスではなく、ディレクトリ、スクリプトが常駐ではそのプロセスの現在の作業ディレクトリを基準にしています。

むしろそれをハードコーディングするよりも、あなたがsys.path[0]を使用してスクリプトのパスを見つけることができる、とのいずれかchdirそれにまたはファイル名で直接それを使います:

os.path.join(sys.path[0], 'info.txt')
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top