E 'possibile (non necessariamente usando l'introspezione di Python) stampare il codice sorgente di uno script?Script Python che stampa la sua fonte
Voglio eseguire un breve script python che stampi anche la sua origine (in modo da poter vedere quali comandi sono eseguiti).
Lo script è qualcosa di simile:
command1()
#command2()
command3()
print some_variable_that_contain_src
La vera domanda è che voglio per eseguire uno script da IPython con la magia run -i
e hanno come output la fonte (vale a dire i comandi eseguiti). In questo modo posso controllare quali comandi sono commentati ad ogni esecuzione. Inoltre, se eseguito in un Notebook, lascia una traccia di quali comandi sono stati usati.
Soluzione
Utilizzando korylprince soluzione io alla fine con questo one-liner da mettere all'inizio dello script:
with open(__file__) as f: print '\n'.join(f.read().split('\n')[1:])
Questo stamperà la sorgente dello script, tranne la prima linea (quello sarebbe solo rumore). È anche facile modificare l'affettamento per stampare una "fetta" diversa dello script.
Se si desidera stampare l'intero file, invece, l'one-liner semplifica a:
with open(__file__) as f: print f.read()
forse esaminare il pacchetto inspect in python: http://www.python.org/doc//current/library/inspect.html. In particolare il metodo 'getsource' – Greg
Questo tipo di programmi sono chiamati programmi Quine. http://en.wikipedia.org/wiki/Quine_(computing) Sto provando a scriverne uno io stesso in Python, è troppo dannatamente difficile. :( – thefourtheye
Perché rimuovere la prima riga? Si ottiene uno script che, quando viene eseguito, stampa il codice sorgente * che non contiene nulla sulla stampa del suo codice sorgente *. È confuso. La prima riga non è rumore più del commenti o asserzioni sono rumore – user2357112