如何找到哪个文件是 "initiator" Python
How to find which file was the "initiator" Python
情况:我们知道下面会检查是否直接调用了脚本。
if __name__ == '__main__':
print "Called directly"
else:
print "Imported by other python files"
问题:else
子句只是一个通用子句,只要不直接调用脚本,就会 运行。
问:如果不直接调用,有什么办法可以得到是在哪个文件中导入的?
附加信息:下面是我设想的代码的示例,只是我不知道要在 <something>
.
中放入什么
if __name__ == '__main__':
print "Called directly"
elif <something> == "fileA.py":
print "Called from fileA.py"
elif <something> == "fileB.py":
print "Called from fileB.py"
else:
print "Called from other files"
根据您要完成的任务,您可能需要了解几种不同的方法。
inspect
模块有一个 getfile()
函数,可用于确定当前正在执行的函数的名称。
示例:
#!/usr/bin/env python3
import inspect
print(inspect.getfile(inspect.currentframe()))
结果:
test.py
要找出哪些命令行参数用于执行脚本,您需要使用 sys.argv
示例:
#!/usr/bin/env python3
import sys
print(sys.argv)
使用 ./test.py a b c
调用时的结果:
['./test.py', 'a', 'b', 'c']
使用 python3 test.py a b c
调用时的结果:
['test.py', 'a', 'b', 'c']
希望对您有所帮助!
试试这个:-
import sys
print sys.modules['__main__'].__file__
参考更好的答案:- How to get filename of the __main__ module in Python?
情况:我们知道下面会检查是否直接调用了脚本。
if __name__ == '__main__':
print "Called directly"
else:
print "Imported by other python files"
问题:else
子句只是一个通用子句,只要不直接调用脚本,就会 运行。
问:如果不直接调用,有什么办法可以得到是在哪个文件中导入的?
附加信息:下面是我设想的代码的示例,只是我不知道要在 <something>
.
if __name__ == '__main__':
print "Called directly"
elif <something> == "fileA.py":
print "Called from fileA.py"
elif <something> == "fileB.py":
print "Called from fileB.py"
else:
print "Called from other files"
根据您要完成的任务,您可能需要了解几种不同的方法。
inspect
模块有一个 getfile()
函数,可用于确定当前正在执行的函数的名称。
示例:
#!/usr/bin/env python3
import inspect
print(inspect.getfile(inspect.currentframe()))
结果:
test.py
要找出哪些命令行参数用于执行脚本,您需要使用 sys.argv
示例:
#!/usr/bin/env python3
import sys
print(sys.argv)
使用 ./test.py a b c
调用时的结果:
['./test.py', 'a', 'b', 'c']
使用 python3 test.py a b c
调用时的结果:
['test.py', 'a', 'b', 'c']
希望对您有所帮助!
试试这个:-
import sys
print sys.modules['__main__'].__file__
参考更好的答案:- How to get filename of the __main__ module in Python?