回调函数的定义与普通函数并没有本质的区别,但一般不直接调用,而是作为参数传递给另一个函数,当另一个函数中触发了某个事件、满足了某个条件时就会自动调用回调函数。下面的代码用来删除可能会包含只读属性文件的文件夹,主要演示回调函数的原理和用法。

import os

import stat

def remove_readonly(func, path):                #定义回调函数

os.chmod(path, stat.S_IWRITE)               #删除文件的只读属性

func(path)                                  #再次调用刚刚失败的函数

def del_dir(path, οnerrοr=None):

for file in os.listdir(path):

file_or_dir = os.path.join(path,file)

if os.path.isdir(file_or_dir) and not os.path.islink(file_or_dir):

del_dir(file_or_dir)                #递归删除子文件夹及其文件

else:

try:

os.remove(file_or_dir)           #尝试删除该文件,

except:                             #删除失败

if onerror and callable(onerror):

onerror(os.remove, file_or_dir)#自动调用回调函数

else:

print('You have an exception but did not capture it.')

os.rmdir(path)                                #删除文件夹

del_dir("E:\\old", remove_readonly)               #调用函数,指定回调函数

回调函数原理与Python实现相关推荐

  1. php回调函数原理和实例

    php回调函数原理和实例 原理 自己调用自己 称之为"递归",而不是回调 你也知道回调的关键是这个回 既然是回,那么就有一个谁是主体的问题,因为回调是往回调用的意思 我调用了函数A ...

  2. python mount回调函数_为python回调函数设置argtype

    我对Python很在行,所以希望我能正确地表达这个问题.在 整个问题涉及从Python调用C例程.我可以通过把一些相关的问题/答案凑在一起来接近,但我似乎不能把事情安排得很好.有两个方面:第一个是用指 ...

  3. C++回调函数中调用Python函数出现的死锁问题调试及解决

    一.查找死锁原因: 1.使用gdb exe指令进入gdb命令行,再输入r运行可执行文件 gdb /home/sdhm/catkin_ws/devel/lib/gpd_ros/gpd_server GN ...

  4. Block、委托、回调函数原理剖析(在Object C语境)——这样讲还不懂,根本不可能!...

    开篇:要想理解Block和委托,最快的方法是搞明白"回调函数"这个概念. 做为初级选手,我们把Block.委托.回调函数,视为同一原理的三种不同名称.也就是说,现在,我们把这三个名 ...

  5. pythonmax函数原理_Softmax函数原理及Python实现

    Softmax原理 Softmax函数用于将分类结果归一化,形成一个概率分布.作用类似于二分类中的Sigmoid函数. 对于一个k维向量z,我们想把这个结果转换为一个k个类别的概率分布p(z).sof ...

  6. matlab filter函数原理,基于python实现matlab filter函数过程详解

    matlab中的filter函数: y = filter(b,a,x) python实现matlab中的filter函数 def filter_matlab(b,a,x): y = [] y.appe ...

  7. python mount回调函数_让Python脚本暂停执行的几种方法(小结)

    1.time.sleep(secs) 参考文档原文: Suspend execution for the given number of seconds. The argument may be a ...

  8. c向python注册函数_python如何调用C, 如何注册成C的回调函数(python后台程序常用方法)...

    其实是python后台程序常用方法: C开发完成底层的功能,python直接把C当做python模块进行调用. 需要做两个工作: python能调用C语言的函数: python通过调用C函数,并注册p ...

  9. Python 回调函数的实现

    什么是回调函数? 在python中一些变量都是对象,包括函数,函数名就是函数对象的变量名称,那么是否要将函数名变量做为参数传给其它函数呢? 答案是肯定的. 当函数B的函数名做为参数,传给别函数A时,并 ...

最新文章

  1. JavaMelody应用监控使用指南
  2. jakarta ee_Jakarta EE贡献–入门
  3. 命令模式应用_命令设计模式的应用
  4. STM32 MDK编译后生成的 .map文件深入分析
  5. 经典数值优化算法--专题学习
  6. Zookeeper Python
  7. C#中获取程序集版本号的方法
  8. AppScan安装包及详细安装教程(带图)
  9. SQL Nexus Tool
  10. 2017年深圳积分入户分值表(精简版)
  11. 每日打卡 22 11 16 CF 1694B Paranoid String
  12. python写网络爬虫的环境搭建(windows完整版)
  13. el-upload+额外的参数 , element上传功能组件及其参数的详解
  14. [篇二章四]_安装 Windows 11 系统
  15. 只要你足够好——写给理想受挫的人们
  16. java的初始化和赋值的区别_Java的赋值与初始化
  17. python代码审查规则_python代码检查
  18. MUSCI算法估计空间方位角
  19. 教材练习-计算存款5年的利息
  20. 计算机与计算机网络_让计算机承担责任

热门文章

  1. 新代系统plc梯形图说明书_东莞自动化PLC编程需要多少钱
  2. dsp呼吸灯C语言编程,DSP28335 呼吸灯程序
  3. 银行离开IBM必死?国货10年内无法接盘
  4. 计算机程序设计 大作业 vb,成人《VB程序设计》标准化大作业(答案)1
  5. JSP自定义标签详解(1)
  6. 基于JAVA+Swing+MYSQL的在线考试系统
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的同学录管理系统
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的仓库管理系统
  9. 基于JAVA+SpringBoot+Mybatis+MYSQL的校园兼职招聘系统
  10. 基于JAVA+SpringMVC+MYSQL的学生请假管理系统