In [1]:
import os
os.listdir('question/one')
Out[1]:
In [ ]:
# %load question/one/main.py
from . import m
In [ ]:
# %load question/one/m.py
import sys
import os
print('cwd', os.getcwd())
print('__file__:', __file__)
print('argv[0]:', sys.argv[0])
print('__name__:', __name__)
In [2]:
!python -m question.one.m
In [3]:
!python question/one/m.py
In [4]:
!python -m question.one.main
从这两种不同的方式可以看出:
sys.argv[0]
和__file__
效果一样.__file__
表示的是模块文件路径,sys.argv[0]
表示的是运行的文件路径.
所以要想取得当前模块的路径,__file__
才是正确的方式.注意: 从直接运行
方式可以看到直接以脚本而不是模块方式运行得到的是相对路径,所以需要调用os.path.abspath
来取得绝对路径.