查找PYC文件中的内容

时间:2010-08-16 20:32:18

标签: python pyc

这可能是一个noobie问题,但是......

所以我有一个需要使用的pyc文件,但我没有任何文档。有没有办法找出其中的类和函数以及它们采取了哪些变量?我不需要编码,只需要如何运行它。

由于

4 个答案:

答案 0 :(得分:9)

只要您可以导入文件,就可以检查它;它是来自.py还是.pyc无关紧要。

>>> import getopt
>>> dir(getopt)
['GetoptError', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'do_longs', 'do_shorts', 'error', 'getopt', 'gnu_getopt', 'long_has_args', 'os', 'short_has_arg']
>>> type(getopt.getopt)
<type 'function'>
>>> inspect.getargspec(getopt.getopt)
ArgSpec(args=['args', 'shortopts', 'longopts'], varargs=None, keywords=None, defaults=([],))
>>> help(getopt.getopt)
Help on function getopt in module getopt:
...

答案 1 :(得分:4)

如果您将其粘贴在导入路径上并按名称导入,则可以使用dir

import foo
dir(foo)

你也可以使用'help'

help(foo)

获取文档字符串。这两个都可用于foo包含的任何内容。请注意,字节码会在版本之间发生变化,因此它可能适用于您的python版本,也可能不适用。如果是这种情况,我能说的最好的就是尝试不同版本,直到有人工作。


如果需要恢复函数的参数,首先得到argcount

argcount = f.func_code.co_argcount

然后,参数是

的第一个argcount变量
f.func_code.co_varnames

这并没有告诉你函数期望它们是什么,只有当它没有文档字符串但它可以完成时才真正有用。

答案 2 :(得分:1)

最简单的方式 http://depython.com

答案 3 :(得分:0)

如果代码本身有文档字符串,并且没有使用删除文档字符串的优化生成,则可以导入模块并查看:

for foo.pyc

import foo
dir(foo)
help(foo)

如果您确定需要代码,则有decompyle