这可能是一个求婚的问题,但是...

因此,我有一个需要使用的PYC文件,但是我没有任何文档。有没有办法找出其中有哪些类和功能以及他们采用的变量?我不需要编码,只是如何运行它。

谢谢

有帮助吗?

解决方案

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

import foo
dir(foo)

您也可以使用“帮助”

help(foo)

获取docstring。这两者都可以用于任何事物 foo 也包含。请注意,字节码在发行版之间更改,因此它可能对您的Python版本可能不起作用。如果是这种情况,我可以说的最好的方法是尝试不同的版本,直到一个作品。


如果您需要恢复函数的论点,则首先获得Argcount

argcount = f.func_code.co_argcount

然后,论点是第一个argcount变量

f.func_code.co_varnames

这不会告诉您功能期望它们是什么,并且只有在没有Docstring但可以完成的情况下才真正有用。

其他提示

只要您可以导入文件,就可以检查它;它来自.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:
...

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

如果代码本身具有DOCSTRINGS,并且没有通过删除DOCSTRINGS的优化生成,则可以导入模块并浏览:

对于foo.pyc

import foo
dir(foo)
help(foo)

如果您决定确实需要代码,则 分解.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top