查找PYC文件中的内容

lov*_*ing 4 python pyc

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

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

谢谢

Gle*_*ard 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:
...
Run Code Online (Sandbox Code Playgroud)

  • 实际上是内省. (4认同)

aar*_*ing 5

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

import foo
dir(foo)
Run Code Online (Sandbox Code Playgroud)

您还可以使用“帮助”

help(foo)
Run Code Online (Sandbox Code Playgroud)

获取文档字符串。这两者都可以用于任何foo包含的东西。请注意,字节码在版本之间会发生变化,因此它可能适用于您的 Python 版本,也可能不适用于您的 Python 版本。如果是这种情况,我能说的最好的办法就是尝试不同的版本,直到有一个版本有效为止。


如果需要恢复函数的参数,首先要获取 argcount

argcount = f.func_code.co_argcount
Run Code Online (Sandbox Code Playgroud)

那么参数就是第一个 argcount 变量

f.func_code.co_varnames
Run Code Online (Sandbox Code Playgroud)

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