ベスパリブ

プログラミングを主とした日記・備忘録です。ベスパ持ってないです。

Pythonの__file__は、対話モードで実行するとエラーになる

Pythonで、ファイル名を出力してくれる__file__は、対話モードで実行するとエラーになります。

> python
Python 3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> print(__file__)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name '__file__' is not defined

対話モードなので、ファイルなんてないので当然といえば当然なエラーでしょうか。

ファイルで実行するときちんと出力してくれます。

# sample.py
import os

print(__file__)

a = os.path.dirname(os.path.abspath(__file__))
print(a)
a = os.path.dirname(os.path.abspath("__file__"))
print(a)
> python sample.py
sample.py
C:\Users\XXXX\workspace
C:\Users\XXXX\workspace