2011-12-16 55 views
1

是否有可能讓一個腳本調用另一個腳本然後退出(不知道我是否放這個權利),而讓另一個腳本運行?具體而言,我想要一個更新腳本來下載installer.py然後運行它。由於installer.py會覆蓋更新腳本,我不能只執行subprocess.call(),因爲它會在'刪除舊安裝'階段失敗。如何在Python中將執行切換到新腳本?

這是可能的,還是我必須讓updater腳本單獨更換一切,將新的腳本放在一個臨時目錄中,然後在程序運行時將其替換掉?這是否被認爲是更好的方法?

非常感謝您,對不起,如果這是非常明顯的。

+0

注意,一旦一個Python模塊已經被導入,你不再需要源文件了,所以可以讓更新腳本運行安裝程序作爲一個子進程,只要更新腳本不需要重新加載它的舊版本,它就可以應該 沒事的。 – 2011-12-17 09:32:40

回答

3

功能os.exec* family之一應該做你想做的。

+0

非常感謝 - 這看起來像只是東西。我會試一試。 – 2e0byo 2011-12-16 19:35:23

0

由於您正在下載另一個Python腳本,因此您可以嘗試使用exec來運行它。在2.x中有一個幫助函數execfile(這包括使用exec關鍵字;在3.x中,您必須讀取該文件並將結果字符串傳遞給exec(現在它是一個函數,如果我「M讀正確)。

您必須始終確保110%你在這樣的情況下,相信內容!看來,這不是你的問題,但。

+0

Python的exec有點像其他語言中的eval,完全不像libc exec。特別是,它並不取代目前的計劃。 – Tobu 2011-12-17 09:37:44