获取脚本自身的文件名有多种方式,例如:
1、f1 = os.path.basename(__file__)
2、f2 = sys.argv[0]
以上代码如果直接写在a.py中,并且直接执行a.py,得到f1、f2是相同的。都是得到a.py的路径
但如果在b.py中引入a (import a),然后直接执行b.py,那么f1得到的是a的路径,f2得到的是b的路径:
# a.py:
import os,sys
class AAA():
def __init__(self):
f1 = os.path.splitext(os.path.basename(__file__))[0]
fx = sys.argv[0]
f3 = os.path.splitext(os.path.basename(fx))[0]
print(f"f1:{f1}")
print(f"fx:{fx}")
print(f"f2:{f2}")
# b.py
from a import AAA
x=AAA()
quit()
得到:
f1:a
fx:C:/test/b.py
f2:b