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
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 .