web-dev-qa-db-ja.com

Pythonで絶対パスと相対パスを使用する場合

参考のため。絶対パスは、コンピューター上の任意の場所への絶対パスです。相対パスは、現在の作業ディレクトリ(PWD)に対するファイルへのパスです。例えば:

絶対パス:_C:/users/admin/docs/stuff.txt_

PWDが_C:/users/admin/_の場合、_stuff.txt_への相対パスは次のようになります:_docs/stuff.txt_

PWD +相対パス=絶対パスであることに注意してください。

かっこいい。ここで、ファイルが存在するかどうかを確認するスクリプトをいくつか作成しました。

os.chdir("C:/users/admin/docs") os.path.exists("stuff.txt")

_stuff.txt_が存在し、それがworksの場合、これはTRUEを返します。

さて、代わりに私が書いた場合、

os.path.exists("C:/users/admin/docs/stuff.txt")

これはTRUEも返します。

どちらか一方をもう一方を使用する必要がある明確な時間はありますか? pythonがパスを探す方法についての方法論はありますか?それは最初に一方を試し、次にもう一方を試しますか?

ありがとう!

6
samGon

最大の考慮事項は、おそらく移植性です。コードを別のコンピューターに移動し、他のファイルにアクセスする必要がある場合、他のファイルはどこにありますか?プログラムに対して同じ場所にある場合は、相対アドレスを使用します。同じ絶対位置にある場合は、絶対アドレスを使用します。

5
Liam Bohl

ユーザーがスクリプトを実行する場所がわからない場合は、osおよび__file__を使用してユーザーのシステムの絶対パスを計算するのが最善です。

__file__は、すべてのPythonスクリプトに設定されているグローバル変数であり、それを含む*.pyファイルへの相対パスを返します。

import os
my_absolute_dirpath = os.path.abspath(os.path.dirname(__file__))
3
Chris Conlan