获取脚本自身的文件名有多种方式,例如:
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
本文探讨了在Python中如何通过os和sys模块获取脚本自身的文件名以及调用者的路径。当直接运行a.py时,f1和f2都会返回a.py的路径。然而,当在b.py中导入并执行a.py,f1将得到a.py的路径,而f2则得到b.py的路径,展示了不同导入方式下路径获取的差异。
679

被折叠的 条评论
为什么被折叠?



