agt*_*ver 4 python self-reference
我想将当前脚本作为Python中变量的字符串.
我找到了两种次优方法,但我希望有更好的解决方案.我发现:
该inspect进口有一个getsource方法,但只返回一个函数(或类或其他),而不是整个脚本的代码.我找不到将整个脚本的对象传递给的方法getsource.
我可以用找到脚本文件的文件位置,__file__或者sys.argv[0]和open它来阅读.但这对我来说似乎太间接了.
那么:是否有(更好的)方法以字符串形式访问整个脚本?
如果相关:我更喜欢3.0以上的Python 2.7解决方案.
尝试:
import inspect
import sys
print inspect.getsource(sys.modules[__name__])
Run Code Online (Sandbox Code Playgroud)
甚至:
import inspect
import sys
lines = inspect.getsourcelines(sys.modules[__name__])[0]
for index, line in enumerate(lines):
print "{:4d} {}".format(index + 1, line)
Run Code Online (Sandbox Code Playgroud)
代码包含在其中的文件被认为是Python"模块",并sys.modules[__name__]返回对该模块的引用.
编辑
或者甚至像@ ilent2建议的那样,不需要sys模块:
import inspect
print inspect.getsource(inspect.getmodule(inspect.currentframe()))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |