(Pythonは)なぜ私は常にファイル関数内の絶対パスを入力する必要がありますか?
-
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')
所属していません StackOverflow