1. ホーム
  2. python

[解決済み] os.path.dirname(__file__) が空を返す。

2022-03-02 20:12:27

質問

.pyファイルが実行されるカレントディレクトリのパスを取得したいです。

例えば、単純なファイル D:\test.py をコードで表示します。

import os

print os.getcwd()
print os.path.basename(__file__)
print os.path.abspath(__file__)
print os.path.dirname(__file__)

と出力されるのはおかしい。

D:\
test.py
D:\test.py
EMPTY

と同じ結果を期待しています。 getcwd()path.dirname() .

与えられた os.path.abspath = os.path.dirname + os.path.basename なぜ

os.path.dirname(__file__)

は空文字を返すのか?

解決方法は?

なぜなら os.path.abspath = os.path.dirname + os.path.basename は成り立たないので、むしろ

os.path.dirname(filename) + os.path.basename(filename) == filename

両方 dirname()basename() は、渡されたファイル名をカレントディレクトリを考慮せずに構成要素に分割するだけです。 もし、カレントディレクトリも考慮したい場合は、明示的にそうする必要があります。

絶対パスのdirnameを取得する場合は

os.path.dirname(os.path.abspath(__file__))