2017-05-05 111 views
0

我使用Python 3.6.1 IDLE。我希望能夠在維護本地環境(變量等)的情況下運行一系列腳本,就像我已將所有命令一行一行地輸入到shell中一樣。但是,無論何時執行腳本,環境都會重新啓動,並且會丟失之前執行的所有變量。如何防止在運行新腳本時重新啓動python IDLE

有什麼我可以做,以防止這種重新啓動?我不想在shell中逐行輸入內容。

此問題與Run a module in IDLE (Python 3.4) without Restart類似,但目前還沒有令人信服的答案,也許是因爲問題的措辭容易混淆。

編輯:我會給出一些背景讓我更清楚爲什麼我想要第二個腳本與第一個腳本共享狀態。我使用Selenium Web Driver來轉發我的大學網絡郵件帳戶中的電子郵件。如果我經常登錄,Outlook Web App意識到發生了一些奇怪的事情並阻止訪問。所以我想用第一個腳本進行一次登錄,然後能夠在第一個腳本上測試不同的轉發腳本。所以我能做的就是運行第一個腳本,然後逐個輸入第二個腳本。但這真的很煩人。如果我可以運行第二個腳本,就好像將它輸入到shell中一樣,即不需要重新啓動,那將會很整潔。

+1

如果您想共享狀態,它們不應該是單獨的腳本。 –

+0

你爲什麼一行一行地輸入這些東西?相反,編輯並運行設置它們的腳本。 – jonrsharpe

回答

0

如何編寫一個調用execfile("other_script.py")(在Python 2中)或exec(open("other_script.py").read())(Python 3)的主腳本?然後只需在IDLE中運行主腳本。您可能需要對每個腳本使用shebang行和(可能)適當的執行權限。

看到這個thread因爲我從那裏討論的一些東西得出我的答案。

另一種選擇是使用shell腳本(bash,batch,sh,您在系統上使用的任何shell)自動執行「在shell中鍵入內容」。

雖然像其他人所說的那樣,但實際上並沒有多少好處將模塊化這項任務分成單獨的文件。爲什麼不創建一個包含所有需要的函數的Python程序,然後根據需要調用它們?

+0

感謝您的深思熟慮的答案。 Exec(...)真的解決了我的問題! 通過外殼自動化也是一個好主意。 我認爲在我的具體情況下,我有一個用於重寫函數,同時保持環境(如我在上面的編輯中所述)。但我同意,這可能是一個非常利基的應用程序。 –

相關問題