我正在用 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
提交
取消