我正在用 python 編寫一個程序,它有三個模塊:1. settings.py 2. init.py 3. main.pysettings.py 只有一個布爾變量,目標是將它用作False跨模塊的全局變量(我們稱之為 var,初始化為)init.py 導入 var,并True在函數中執行某些操作后將其設置為main.py 必須檢查var == True. 如果是,繼續執行程序,否則要求用戶提供一些命令行指令(例如,prg start),然后調用 init.py 中的函數,該函數反過來也將設置var==True問題是,由于我制作了一個從 CLI 獲取參數的程序,因此var始終設置為 False。因此,CLI 接受的唯一命令是prg start打印我編寫的錯誤消息。我需要一些方法來var保持True會話的剩余時間,會話實際上會轉換為直到計算機關閉為止。main.py 的代碼first = sys.argv[0]arguments = sys.argv[1:]second = arguments[0]if settings.var == False and second != "start": print "Error, type \'prg start\' to start" sys.exit(0)if second == "start": init.start()這就是我想要完成的:pi@raspberrypi: ~$ prg 開始pi@raspberrypi: ~$ prg 設置顏色 4成功現在發生了什么:pi@raspberrypi: ~$ prg 開始pi@raspberrypi: ~$ prg 設置顏色 4錯誤,輸入“prg start”開始
2 回答

慕斯王
TA貢獻1864條經驗 獲得超2個贊
您需要某種在關機時消失的持久存儲。盡管您的程序當前未運行,但它也必須是持久的。
想到的解決方案:
文件:
將上次啟動時間寫入文件,并添加上次'prg start
- 確定后者是否在前者之后:
Linux:
last reboot
+上次 通話的日期時間'prg start'
- 您可以確定重啟之前/之后Windows:(
systeminfo | find /i "Boot Time"
或任何您的語言中的稱呼),相同的原則
該文件不會消失,但您的“上次重啟時間”將在重啟時重置。'prg start'
如果使用其他參數開始,您可以簡單地在文件中收集時間戳并根據“上次重新啟動”的當前值檢查“實時”。
服務器/客戶端:
首先產生一個獨立的“服務器”進程'prg start'
- 檢查該進程是否使用
” 管道通訊 “你在嗎?- 沉默.vs. “你那里?” - “YEP”(fe Python multiprocessing - 進程之間的管道通信)
或檢查您的“服務器”實例是否已在運行(確保只有一個程序實例正在運行)
“服務器”進程將在重新啟動時消失(或手動殺死時 - 但如果刪除它,文件也會消失......)
添加回答
舉報
0/150
提交
取消