我想记录(进入txt
文件)Python脚本停止的时间。这个问题与逻辑有关:
如果它停止了,它必须知道它什么时候 - 但是如果它关闭了,它怎么知道呢?在它发生之前,它必须在大约1秒前知道关闭。这让我进入下一阶段:
进程"python.exe"
的监视程序,但由于我想在其中使用它的上下文而无法工作:我想知道我的计算机何时通过Python脚本关闭。
这样做的目的是记录关机(睡眠)并重新启动/唤醒计算机(事件查看器似乎没有记录所有这些,所以我说,嘿,为什么不这样做? )
答案 0 :(得分:3)
对于常规终止,我建议使用atexit
模块:
https://docs.python.org/2/library/atexit.html
您可以像这样写下脚本终止的时间:
import datetime
import atexit
def leaving():
open("my.log", "w").write("I was closed at %s" % datetime.datetime.now())
atexit.register(leaving)
另一种方法是使用装饰器,如下所示:
import atexit
@atexit.register
def leaving():
import datetime
open("my.log", "w").write("I was closed at %s" % datetime.datetime.now())
答案 1 :(得分:1)
finally块中的任何内容都可以保证运行,因此您可以执行此操作,只要您不会捕获SystemExit
或BaseException
,这会导致关闭信号或键盘中断:
import logging
import time
logger = logging.getlogger(__name__)
def process():
'''this can be anything, sleep is probably least resource consumptive'''
while 1:
time.sleep(5)
def main():
try:
process()
finally: # guaranteed to run, so long as Python gets an error,
# shutdown signal or keyboard interrupt.
logger.info('shutdown at {0}'.format(datetime.datetime.now()))
if __name__ == '__main__':
main()