0

Python ファイルにシバン ( ) が含まれている場合、モジュール#!blablaの関数はそれを返しません。モジュールオブジェクトからシバンを取得するにはどうすればよいですか?getcommentsinspect

4

1 に答える 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 に答える