Domanda

Questa può essere una domanda noobie, ma ...

Ho un file pyc che ho bisogno di usare, ma non ho alcuna documentazione su di esso. C'è un modo per scoprire quali classi e le funzioni sono in esso e quali variabili prendono? Non ho bisogno di codice, proprio come per eseguirlo.

Grazie

È stato utile?

Soluzione

se si bastone sul vostro percorso di importazione e importarlo per nome, è possibile utilizzare dir

import foo
dir(foo)

si può anche usare `help '

help(foo)

per ottenere il docstring. Entrambi questi può essere utilizzato su qualsiasi cosa che foo contiene pure. Si noti che le modifiche bytecode tra le versioni in modo che può o non può funzionare per la versione di Python. Se questo è il caso, il meglio che posso dire è di provare diverse versioni fino a che uno lavori.


Se avete bisogno di recuperare gli argomenti di una funzione, in primo luogo ottenere l'argcount

argcount = f.func_code.co_argcount

gli argomenti sono poi i primi variabili argcount di

f.func_code.co_varnames

Questo non vi dico quello che la funzione si aspetta che siano, ed è realmente utile solo se non dispone di una docstring, ma si può fare.

Altri suggerimenti

Fino a quando è possibile importare il file, è possibile ispezionare; non importa se proviene da un .py o .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:
...

Il modo più semplice http://depython.com

Se il codice stesso ha docstrings, e non è stato generato con le ottimizzazioni che docstrings rimuovere, è possibile importare il modulo e intorno peek:

per foo.pyc

import foo
dir(foo)
help(foo)

Se si decide di fare il codice bisogno, c'è decompyle .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top