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来取得绝对路径.