gpt4 book ai didi

python - 如何关闭python脚本而不只是在try/except语句中激活 "except"

转载 作者:行者123 更新时间:2023-11-30 22:55:22 25 4
gpt4 key购买 nike

我有一个 python 脚本,在数据库中运行了大约 50,000 个项目,每个项目大约需要 10 秒,我想停止它。

但是,如果我在代码位于 try except 部分时按 ctrl + C,那么我的程序将输入 Expect 语句并删除该项目,然后继续。关闭程序的唯一方法是通过这种方式重复删除项目,直到我(纯粹是运气好)在 try 语句中捕获它。

如何在不终止 try 语句的情况下退出脚本?

编辑 1

我有一个看起来像这样的声明:

for item in items:
try:
if is_item_gone(content) == 1:
data = (item['id'])
db.update('UPDATE items SET empty = 0 WHERE id = (%s);', data)
else:
do alot of stuff
except:
data = (item['id'])
db.delete('...')

编辑2

我的连接到数据库代码的顶部如下所示:

#!/usr/bin/python
import MySQLdb
import sys

class Database:
....

最佳答案

问题是因为您使用了一个毯子异常(exception),这始终是一个坏主意,如果您捕获特定的异常,那么当您KeyboardInterrupt时,您的脚本将停止:

for item in items:
try:
if is_item_gone(content) == 1:
data = (item['id'])
db.update('UPDATE items SET empty = 0 WHERE id = (%s);', data)
else:
do alot of stuff
except MySQLdb.Error as e:
print(e)
data = (item['id'])
db.delete('...')

如果您有其他异常需要捕获,您可以在 except 中使用多个:

 except (KeyError, MySQLdb.Error) as e

至少你可以捕获Exception as e并打印错误。

for item in items:
try:
if is_item_gone(content) == 1:
data = (item['id'])
db.update('UPDATE items SET empty = 0 WHERE id = (%s);', data)
else:
do alot of stuff
except Exception as e:
print(e)
data = (item['id'])
db.delete('...')

这个故事的寓意是不要使用毯子,除非,捕获你所期望的并记录错误也可能是一个好主意。 exception-hierarchy也值得一读,看看你到底捕捉到了什么。

关于python - 如何关闭python脚本而不只是在try/except语句中激活 "except",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37448535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com