web-dev-qa-db-ja.com

python 3を使用して現在の作業ディレクトリを取得する方法は?

IDLEで次のスクリプトを実行すると

import os
print(os.getcwd())

次のように出力されます

D:\testtool

しかし、cmdプロンプトから実行すると、

c:\Python33>python D:\testtool\current_dir.py
c:\Python33

IDLEを使用して取得した結果と同じ結果を取得するにはどうすればよいですか?

47
Shriram

IDLEは現在の作業ディレクトリを実行されるスクリプトの場所に変更しますが、cmdを使用してスクリプトを実行すると、それは行われず、CWDはそのままになります。

現在の作業ディレクトリをスクリプトを含むディレクトリに変更するには、次を使用できます。

import os
os.chdir(os.path.dirname(__file__))
print(os.getcwd())

__file__変数は、ファイルからスクリプトを実行する場合にのみ使用でき、ファイルへのパスが含まれています。詳細はこちら: Python __file__属性の絶対または相対?

75
Maciek

Pathlibを使用すると、現在のファイルがあるフォルダーを取得できます。 __file__は、モジュールがロードされたファイルのパス名です。参照: docs

import pathlib

current_dir = pathlib.Path(__file__).parent
current_file = pathlib.Path(__file__)

ドキュメント参照: link

4
butsyk