这可能是一个菜鸟问题,但是......
所以我有一个需要使用的 pyc 文件,但我没有任何文档。有没有办法找出其中包含哪些类和函数以及它们采用哪些变量?我不需要编码,只需要如何运行它。
谢谢
只要能导入文件,就可以检查;不管它来自 .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:
...
如果将其粘贴在导入路径上并按名称导入,则可以使用dir
import foo
dir(foo)
你也可以使用“帮助”
help(foo)
获取文档字符串。这两者都可以用于任何foo
包含的东西。请注意,版本之间的字节码会发生变化,因此它可能适用于您的 python 版本,也可能不适用。如果是这种情况,我能说的最好的方法是尝试不同的版本,直到一个工作。
如果您需要恢复函数的参数,您首先获取 argcount
argcount = f.func_code.co_argcount
然后参数是第一个 argcount 变量
f.func_code.co_varnames
这并没有告诉您函数期望它们是什么,并且只有在它没有文档字符串但可以完成时才真正有用。
最简单的方法http://depython.com
如果代码本身有文档字符串,并且它不是通过删除文档字符串的优化生成的,您可以导入模块并查看:
对于 foo.pyc
import foo
dir(foo)
help(foo)
如果您决定确实需要代码,则可以使用 decompyle。