如何解决Python脚本未随键盘中断而退出
我制作了一个简单的脚本来捕获屏幕截图,并每隔几秒钟将其保存到一个文件中。 这是脚本:
from PIL import ImageGrab as ig
import time
from datetime import datetime
try :
while (1) :
tm = datetime.today().strftime('%Y-%m-%d-%H:%M:%s')
try :
im = ig.grab()
im.save('/home/user/tmp/' + tm + '.png')
time.sleep(40)
except :
pass
except KeyboardInterrupt:
print("Process interrupted")
try :
exit(0)
except SystemExit:
os._exit(0)
它可以完美工作(在Ubuntu 18.04,python3中),但是键盘中断不起作用。我关注了this问题,并添加了except KeyboardInterrupt:
语句。当我按CTRL+C
时,它将再次截取屏幕截图。有人可以帮忙吗?
解决方法
您需要将键盘中断异常处理一次。键盘中断永远不会到达您的外部try / except块。
您要转义while
循环,则在while块中处理异常:
while True: # had to fix that,sorry :) tm = datetime.today().strftime('%Y-%m-%d-%H:%M:%S') try : im = ig.grab() im.save('/home/user/tmp/' + tm + '.png') time.sleep(40) except : # need to catch keyboard interrupts here and break from the loop pass
如果您在键盘中断中从循环中中断,则会退出while循环,而不会再次抓住。
,使用以下代码解决您的问题:
from PIL import ImageGrab as ig
import time
from datetime import datetime
while (1):
tm = datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
try:
im = ig.grab()
im.save('/home/user/tmp/' + tm + '.png')
time.sleep(40)
except KeyboardInterrupt: # Breaking here so the program can end
break
except:
pass
print("Process interrupted")
try:
exit(0)
except SystemExit:
os._exit(0)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。