0

When a Python file contains a shebang (#!blabla), the function getcomments from the module inspect doesn't return it. What can I do to get the shebang from a module object?

4

1 回答 1

1

shebang 仅在它是文件的第一行时才有效......因此,您似乎可以执行以下操作:

import module
fname = module.__file__
with open(fname) as fin:
    shebang = next(fin)

当然,我已经跳过了一些微妙之处……(确保第一行实际上是注释,确保我们抓取的是.py文件而不是.pyc文件等)。如果你想让它更健壮,这些检查和替换应该很容易做到。

而且,我想使用__file__魔法的替代方法是使用inspect.getsourcelines

 shebang = inspect.getsourcelines(module)[0]
 if not shebang.startswith('#!'):
    pass #Not a shebang :)
于 2013-07-24T07:36:55.647 回答