从命令行反汇编 Python 脚本?

Disassemble a Python script from the command line?

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

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

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

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

python -m dis myscript.py

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

python -m dis myscript.py > output.txt

注意:据我所知,dis 的这种用法没有记录,检查 source code 它可能不是模块的稳定部分,但它 是否适用于当前的 CPython。