我想将当前脚本作为Python中变量的字符串。
我发现了两种次优方式,但我希望有更好的解决方案。我找到了:
inspect
导入有getsource
方法,但只返回一个函数(或类或其他)的代码,但不返回整个脚本。我找不到将整个脚本的对象传递给getsource
的方法。
我可以使用__file__
或sys.argv[0]
和open
来查找脚本文件的文件位置。但这对我来说似乎太间接了。
那么:有没有(更好的)方法以字符串形式访问整个脚本?
如果相关:我更喜欢高于3.x的Python 2.7解决方案。
答案 0 :(得分:8)
尝试:
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()))