我爲我的腳本(Python 3)創建了一個監視程序計時器,它允許我在出現任何問題時停止執行(未在下面的代碼中顯示)。不過,我希望能夠僅使用Python自動重新啓動腳本(無需外部腳本)。代碼需要跨平臺兼容。自我重新啓動Python腳本
我已經嘗試子流程和execv(os.execv(sys.executable, ['python'] + sys.argv)
),但是我在Windows上看到非常奇怪的功能。我打開命令行並運行腳本(「python myscript.py」)。腳本停止但不會退出(通過任務管理器驗證),並且除非我按兩次輸入,否則它不會自行重新啓動。我希望它能自動工作。
有什麼建議嗎?謝謝你的幫助!
import threading
import time
import subprocess
import os
import sys
if __name__ == '__main__':
print("Starting thread list: " + str(threading.enumerate()))
for _ in range(3):
time.sleep(1)
print("Sleeping")
''' Attempt 1 with subprocess.Popen '''
# child = subprocess.Popen(['python',__file__], shell=True)
''' Attempt 2 with os.execv '''
args = sys.argv[:]
args.insert(0, sys.executable)
if sys.platform == 'win32':
args = ['"%s"' % arg for arg in args]
os.execv(sys.executable, args)
sys.exit()
感謝您的迴應!我遇到的問題不在於未顯示的腳本,而是在發佈的代碼中。事實證明,當我在Windows上運行腳本的時鐘倍增時,它工作正常,但是當我從命令行鍵入「python myscript.py」時,它不起作用。 Linux中沒有當前的問題。 – NJC