Python ファイルにシバン ( ) が含まれている場合、モジュール#!blabla
の関数はそれを返しません。モジュールオブジェクトからシバンを取得するにはどうすればよいですか?getcomments
inspect
1 に答える
1
シバンは、ファイルの最初の行である場合にのみ有効です...したがって、次のようなことができるようです:
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 に答える