是否有可能(不必使用python introspection)來打印腳本的源代碼?打印其源代碼的Python腳本
我想執行一個短的python腳本,也打印它的源代碼(所以我可以看到哪些命令被執行)。
劇本是這樣的:
command1()
#command2()
command3()
print some_variable_that_contain_src
真正的應用程序是,我要與run -i
魔術運行從IPython的一個腳本,並作爲輸出源(即指令執行)。通過這種方式,我可以檢查每次執行時評論哪些命令。而且,如果在筆記本上執行,我會留下一些已使用過的命令。
解決方案
使用korylprince解決方案,我結束了這一個班輪在腳本的開頭放:
with open(__file__) as f: print '\n'.join(f.read().split('\n')[1:])
這將打印除了第一行的腳本源(那隻會是噪音)。爲了打印腳本的另一個「切片」,修改切片也很容易。
如果你想打印整個文件相反,一個班輪簡化爲:
with open(__file__) as f: print f.read()
也許你可以看看python中的inspect包:http://www.python.org/doc//current/library/inspect.html。特別是'getsource'方法 – Greg
這種類型的程序被稱爲Quine程序。 http://en.wikipedia.org/wiki/Quine_(computing)我試圖用python寫一個自己,太難了。 :( – thefourtheye
爲什麼要刪除第一行?你得到一個腳本,當它運行時,打印出的源代碼*不包含任何關於打印其源代碼的內容。*這很令人困惑,第一行不是噪聲。評論或斷言是噪聲 – user2357112