如何从加载的模块(sys.modules)重建Python源码?
如果你能访问到sys.modules,能否为加载的模块构建出人类可读的源代码呢?
有人告诉我这是不可能的,但我相信在Python中这是可以做到的。
2 个回答
0
一般来说,源代码会存放在文件系统中,能够很容易地通过sys.modules找到。
for name, mod in sys.modules.items():
try:
fname = mod.__file__
except AttributeError:
continue
if fname.endswith(".pyc"):
fname = fname[:-1]
try:
fcode = open(fname)
except IOError:
continue
code = fcode.read()
# .. do something with name and code