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