首页 > 解决方案 > 从命令行反汇编 Python 脚本?

问题描述

使用 gcc,您可以在代码编译成程序集后使用 -S 停止编译。Python/字节码有类似的功能吗?我知道这样的方法:

import dis
x = compile('print(1)', '', 'eval')
dis.dis(x)

哪个打印:

  1           0 LOAD_NAME                0 (print)
              2 LOAD_CONST               0 (1)
              4 CALL_FUNCTION            1
              6 RETURN_VALUE

但我正在考虑更多类似的东西:

> python3 -{SOME FLAG HERE} output my_script.py

它以可读格式输出包含脚本字节码的文件。

标签: pythonbytecode

解决方案


如果您要查找的是反汇编程序的输出,那么您可以将模块作为脚本运行:

python -m dis myscript.py

反汇编程序输出将打印到标准输出。您可以使用适当的 shell 工具将其重定向到某个文件。例如在 *nix 上:

python -m dis myscript.py > output.txt

注意:dis据我所知,这种用法没有记录,并且检查源代码它可能不是模块的稳定部分,但它确实适用于当前的 CPython。


推荐阅读