我想在脚本中实现适当的SIGINT处理,该脚本将打开多个文件和一个数据库连接。如果脚本是CTRL + C或其他方式中断,则应将其关闭。
以前我用过 KeyboardInterrupt异常捕获CTRL + C,在那里检查了是否定义了文件/连接,如果如此,则关闭它们,然后退出。
这是否真的是pythonic方法,还是建议使用信号处理程序?例如
import signal, sys, time
def handler(signum, frame):
print("..kthxbye")
sys.exit(1)
def main():
signal.signal(signal.SIGINT, handler)
i = 0
while True:
print(i)
i += 1
time.sleep(1)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎比较干净,但我不知道如何将文件名或数据库连接传递给处理程序。
我有一个包含两个列表的类,一个是int和一个字符串......看起来像这样
class Something:
num = 0
def __init__(self, clu, pro)
self.clu = clu
self.rep = []
self.rep_dis = []
self.pro = ""
Run Code Online (Sandbox Code Playgroud)
现在在我的主要内容中,我保留了一个Something对象列表.
something_list = []
tmp_something = Something("this", "that")
tmp_something.rep.append("some")
tmp_something.rep_dis.append("thing")
something_list.append(tmp_something)
Run Code Online (Sandbox Code Playgroud)
如何按对象列表的长度对此列表进行排序rep?
编辑:代码段格式