如何找到哪个文件是“启动器”Python

时间:2018-01-25 08:43:38

标签: python python-import filereference

情况:我们知道以下内容将检查脚本是否已被直接调用。

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"

2 个答案:

答案 0 :(得分:2)

试试这个: -

import sys
print sys.modules['__main__'].__file__

请参阅更好的答案: - How to get filename of the __main__ module in Python?

答案 1 :(得分:1)

您可能希望了解几种不同的方法,具体取决于您尝试完成的工作。

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']

希望这有帮助!