Python标准发行版中的atexit模块具有两个功能-register()和unregister()。这两个函数均以某个现有函数作为参数。当解释器会话正常终止时,注册的功能会自动执行。

如果注册了多个功能,则其执行顺序与注册的顺序相反。这意味着,函数f1(),f2()和f3()依次注册,它们的执行顺序为f3(),f2()和f1()。

该unregister()函数从要自动调用的函数列表中删除指定的函数。

以下代码显示了如何在代码终止后注册功能以自动执行。(注意:此代码必须从命令行而不是通过IDLE执行)。该程序要求用户连续输入数字并将其相加。循环结束后,将savetotal()自动调用已注册的函数,以将添加的内容保存到文件中。import atexit

sum = 0

def savetotal():

fo = open("atexit.txt","w")

fo.write(str(sum))

print ("sum written to file")

fo.close()

atexit.register(savetotal)

while True:

n = int(input("enter a number. -1 to exit"))

if n == -1:

break

sum = sum + n

print (sum)

将以上代码另存为atexit-example.py并从命令行运行。添加连续的数字输入,最后将总数写入atexit.txt。C:\python36>python atexit-example.py

enter a number. -1 to exit4

enter a number. -1 to exit6

enter a number. -1 to exit3

enter a number. -1 to exit5

enter a number. -1 to exit2

enter a number. -1 to exit-1

20

sum written to file

atexit.txt文件将在当前目录中创建,并将存储总数(本例中为20)。

也可以使用不同的参数注册函数。在这种情况下,带有每个参数的函数将被独立注册,并以相反的注册顺序执行。import atexit

names = ['Ashok', 'Radha', 'Abdul', 'John']

def hello(name):

print ("Hello",name)

for name in names:

atexit.register(hello,name)

输出结果C:\python36>python atexit-example2.py

Hello John

Hello Abdul

Hello Radha

Hello Ashok

atexit.unregister(hello)将从hello()方法列表中删除带有各种参数的所有副本。

装饰语法

注册函数的一个方便的替代方法是使用register()函数作为装饰器。import atexit

@atexit.register

def hello():

print('Hello World!')

print('Say Hello')

输出结果C:\python36>python atexit-example3.py

Say Hello

Hello World!

如果程序突然终止或调用os.exit()函数,则不会自动调用已注册的函数。

atexit模块可用于自动执行清除操作,例如关闭数据库和文件,释放资源等。

python exe enter退出,Python程序退出处理程序(atexit)相关推荐

  1. python 退出当前程序

    在脚本里 调用sys 里的exit子命令,可以强行中断当前程序 #!/usr/bin/env python # -*- coding:utf-8 -*- import sysprint("程 ...

  2. python 创建画板_OpenCV +Python 制作画板

    首先声明一下,本例思路不是博主原创,博主在前人的代码上进行了个性化的修改,制作了一个简单的画图工具.下面附上自己的理解,与君共勉. 效果图 画图工具实现 代码 # coding:utf-8 impor ...

  3. 从零开始,教你如何安装、配置Python开发环境,Python入门安装教程,超级详细

    近日,我鼓起勇气从头开始正儿八经地配置一个更轻量.更趁手的 Python 开发环境.经过一番折腾,我比较顺利地在 Windows 10 上配置了一个比较满意的 Python 环境: 安装稳定版本的 P ...

  4. python sys.exit_Python程序退出方式(sys.exit() os._exit() os.kill() os.popen(...))

    对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关的几种方法看了并实践了下,同时也记录下. 参考: Pytho ...

  5. python退出程序-Python程序退出方式小结

    对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关的几种方法看了并实践了下,同时也记录下. 参考: Pytho ...

  6. Python程序退出方式小结(亲测)

    这篇文章主要介绍了Python程序退出方式小结,具有一定参考价值,需要的朋友可以了解下. 对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这 ...

  7. 如何退出python程序_python怎么退出程序

    python程序退出方式[sys.exit() os._exit() os.kill() os.popen(...)]. 1. sys.exit() 执行该语句会直接退出程序,这也是经常使用的方法,也 ...

  8. python按enter退出_【cmd按任意键退出 python】

    转Linux 下 Python 实现按任意键退出 某天在群内有同学问到,在python下我用input或者raw_input都得输入完后回车才能获取到输入的值,那如何实现任意键退出暂停等功能呢,我当时 ...

  9. Python程序退出方式小结

    Python程序退出方式小结 这篇文章主要介绍了Python程序退出方式小结,具有一定参考价值,需要的朋友可以了解下. 对于如何结束一个Python程序或者用Python操作去结束一个进程等,Pyth ...

最新文章

  1. 用adb命令启动停止Android程序
  2. java filesystem 追加_java 如何往已经存在的excel表格里面追加数据的方法
  3. kindle 笔记/标注导出
  4. 利用数据集在水晶报表中显示图像
  5. libxml -- 解析 XML 文档
  6. GY歌谣之读懂每行代码(飞智) 2020 10 16 Duplicate keys detected
  7. 赛尔原创 | N-LTP:基于预训练模型的中文自然语言处理平台
  8. HR谈网络工程师求职与职业规划
  9. fgetc与EOF的错综复杂关系
  10. SIGIR2021推荐系统论文集锦(附论文原文及代码链接)
  11. java元类_元类 - 一心不乱 - 博客园
  12. 关于embedding的理解,2020-7-30
  13. ArcEngine实现pagelayout中文本元素的属性对话框
  14. gdt描述_GDT形位公差详解.ppt
  15. 心学与技术-大学之道和尽心知性
  16. python大数据运维工程师待遇_什么是大数据运维工程师
  17. 【富文本】wangeditor编辑器简单使用(自定义图片上传)
  18. java实现图片反色
  19. 新西兰奥克兰发生三车追尾事故 造成一死一伤
  20. [论文阅读] BoT-SORT: Robust Associations Multi-Pedestrian Tracking

热门文章

  1. 2场直播丨从零快速搭建一整套监控体系、Oracle Database Server经典体系结构
  2. 倒计时7天:招行、平安齐聚DTC 2019之金融峰会,讲师议题抢先看
  3. pg数据库有雷锋?用户已有权限为何无故消失?
  4. 电商场景下,如何处理消费过程中的重复消息?
  5. OpenHarmony移植案例:如何适配服务启动引导部件bootstrap_lite
  6. AI实战分享 | 基于CANN的辅助驾驶应用案例
  7. 动手实操丨基于随机森林算法进行硬盘故障预测
  8. 诸多老牌数据仓库厂商当前,Snowflake如何创近12年最大IPO金额
  9. 快上车,带你了解HiLens Studio六大优势
  10. 数据库“意外失联”?华为云DRS异地多活灾备为您支招