什么是 .pyc_dis 文件?
我有一个文件夹里面有一个来自某个模块的 .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')