【问题标题】:Find what is in a PYC file查找 PYC 文件中的内容
【发布时间】:2010-08-16 20:32:17
【问题描述】:

这可能是一个菜鸟问题,但是...

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

谢谢

【问题讨论】:

  • 与之配套的.py 文件在哪里?

标签: python pyc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果你把它贴在你的导入路径上并按名称导入,你可以使用dir

    import foo
    dir(foo)
    

    你也可以使用`help'

    help(foo)
    

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


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

    argcount = f.func_code.co_argcount
    

    参数是第一个 argcount 变量

    f.func_code.co_varnames
    

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

    【讨论】:

    • dir 不会给你完整的方法签名。
    • 太棒了..这让我得到了这些功能。有没有办法告诉函数/类将什么作为变量?
    • 谢谢!帮助是我一直在寻找的。 :) 效果很好。
    • @lovefaithswing,如果帮助对功能不起作用,请尝试 Glen Maynards 的建议。它比我建议的要少。对于类,只需将其应用于类的__init__ 方法即可。
    【解决方案3】:

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

    【讨论】:

    • 我试过了,我得到的只是整个文档的帮助文本。即,一个字符串表示“此文件执行 x”,没有其他详细信息
    【解决方案4】:

    如果代码本身有文档字符串,并且它不是通过删除文档字符串的优化生成的,您可以导入模块并查看:

    对于 foo.pyc

    import foo
    dir(foo)
    help(foo)
    

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

    【讨论】:

      猜你喜欢
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 2019-09-12
      • 2012-09-08
      • 1970-01-01
      • 2012-02-17
      相关资源
      最近更新 更多