そのようなpythonファイルがあると仮定します
#python
#comment
x = raw_input()
exec(x)
exec のコメントを含むファイル全体のソースを取得するにはどうすればよいでしょうか?
そのようなpythonファイルがあると仮定します
#python
#comment
x = raw_input()
exec(x)
exec のコメントを含むファイル全体のソースを取得するにはどうすればよいでしょうか?
これはまさにinspect
モジュールの目的です。特に、ソース コードの取得セクションを参照してください。
現在実行中のモジュールのソースを取得しようとしている場合:
thismodule = sys.modules[__name__]
inspect.getsource(thismodule)
これを何に使用する予定かはわかりませんが、コマンド ライン スクリプトを維持するために必要な作業を減らすためにこれを使用しています。私は常に open( _ file _ ,'r')を使用しました
'''
Head comments ...
'''
.
.
.
def getheadcomments():
"""
This function will make a string from the text between the first and
second ''' encountered. Its purpose is to make maintenance of the comments
easier by only requiring one change for the main comments.
"""
desc_list = []
start_and_break = "'''"
read_line_bool = False
#Get self name and read self line by line.
for line in open(__file__,'r'):
if read_line_bool:
if not start_and_break in line:
desc_list.append(line)
else:
break
if (start_and_break in line) and read_line_bool == False:
read_line_bool = True
return ''.join(desc_list)
.
.
.
parser = argparse.ArgumentParser(description=getheadcomments())
このようにして、 --help オプションを使用してコマンドラインからプログラムを実行すると、プログラムの上部にあるコメントが出力されます。