什么是 .pyc_dis 文件?

3 投票
1 回答
1531 浏览
提问于 2025-04-16 02:40

我有一个文件夹里面有一个来自某个模块的 .pyc_dis 文件。我可以用它做什么?我该怎么运行它?这个文件到底是从哪里来的?

我在谷歌上找不到任何相关的信息。

谢谢。

1 个回答

4

这可能是通过decompyle工具反汇编得到的Python字节码。

你可以生成类似的数据,像这样:

>>> import code, dis
>>> c = code.compile_command('x = []; x.append("foo")')
>>> dis.disassemble(c)
  1           0 BUILD_LIST               0
              3 STORE_NAME               0 (x)
              6 LOAD_NAME                0 (x)
              9 LOAD_ATTR                1 (append)
             12 LOAD_CONST               0 ('foo')
             15 CALL_FUNCTION            1
             18 PRINT_EXPR          
             19 LOAD_CONST               1 (None)

这个文件的内容看起来像吗?

字节码的反汇编其实用处不大,但如果有人想从.pyc文件重建Python源代码,它是可以用的(而且decompyle反汇编器就是这么做的)。

更新

例如,当你运行

$ decompyle --showasm -o ./ app.pyc

会在当前目录生成一个包含字节码分析的app.pyc_dis文件,在我简单的例子中,它的内容是:

0   BUILD_LIST_0      ''
3   STORE_NAME        'x'
6   LOAD_NAME         'x'
9   LOAD_ATTR         'append'
12  LOAD_CONST        'foo'
15  CALL_FUNCTION_1   ''
18  POP_TOP           ''
19  LOAD_CONST        ''
22  RETURN_VALUE      ''

x = []
x.append('foo')

撰写回答