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?
问问题
397 次
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 回答