我如何找到作为Python程序开头的文件?

时间:2016-02-06 00:34:19

标签: python

让我们假设我有一个至少包含两个文件的程序,magic.py是herebemagic模块的一部分......

def foo():
    # This line is what my question will be all about
    pass

...和main.py,它启动程序:

import os
from herebemagic import magic
print("This is where this file lies: %s" % (repr(os.path.abspath(__file__)), ))
magic.foo()

如图所示,查找模块的文件及其所在的路径非常简单。但是我怎么能在magic.py中获得对main.py模块的引用(是解释器调用的模块,不一定是直接导入herebemagic的模块),这样我就能得到它的文件?

当然我可以在main.py中找到它,并将其传递给foo(),但实际上在两者之间可以有任意数量的模块,在我的情况下,它会是难以传递它(我正在用importlib加载很多模块,而且这些信息目前只与其中一个模块相关)。或者我可以使用内置,但这是一个没有人想要乱扔垃圾的命名空间。

1 个答案:

答案 0 :(得分:2)

使用主脚本的名称作为命令行参数调用Python可执行文件。 Python将此保留在sys.argv

sys.argv[0]