01Python基础阶段_Day07

批量修改文件名后复制文件

重点注意:
翻车点:
当以二进制模式打开文件进行文件操作时.
read 函数最终读取文件内容为空时,返回的结果为 b’’
表示是一个二进制的空字符串
在 Python2.7版本中. ‘’ == b’’ 结果为True
在 Python3.6版本中. ‘’ == b’’ 结果为False

``

# 批量读取文件,改名之后去复制
# E:/PythonProject/MyProject/01/Day07
# 使用文件操作功能,需要先导入os模块
import os# 源文件夹,目标文件夹
def muilt_file_copy(src, dst):print(os.getcwd())# 切换目录os.chdir(src)# 从源当中去读取所有的文件信息file_list = os.listdir(src)print(file_list)# 创建出一个新的目标文件夹os.mkdir(dst)# 循环 读取文件次数,遍历每一个文件for file in file_list:# 对文件改名,遍历的文件就是需要复制的源文件,改名后的文件就是要复制出来的文件# 先对源文件名进行分割,保险起见,从右向左分割s_file = file.rpartition(".")dst_file = dst + "/" + s_file[0] + "_bak" + s_file[1] + s_file[2]print(dst_file)# 分别以读写的方式打开源和目标文件file_r = open(file, "rb")file_w = open(dst_file, "wb")# 读取内容,写入内容while True:content = file_r.read(1024)# 因为打开文件时,使用的是二进制打开,所以在判断结束时,需要判断是否是一个二进制空字符串if content == b"":print(f'{file} 复制成功!')file_r.close()file_w.close()break# 如果读取内容不是空,将读取内容写入到目标文件file_w.write(content)else:print(f"一共复制了{len(file_list)}个文件")# 源文件夹
src = "C:/Users/LH/Desktop/v"
# 目标文件夹
dst = "C:/Users/LH/Desktop/v_bak"
muilt_file_copy(src, dst)

面向对象概述

面向对象生活举例

类: 是对现实事物的属性和行为的抽象

类不能具体的表示一个真实存在的事物.

对象: 是类的一种实例表示
是真实存在的,看得见摸得到的

类与对象的关系

类(Class) 由3个部分构成

类的名称:类名
类的属性:一组数据
类的方法:允许对进行操作的方法 (行为)

类的定义格式

经典类:
class 类名:
属性
行为

新式类:
class 类名(object):
属性
行为

在 python3 以后,只有新式类

创建对象和使用对象的格式

对象名 = 类名(参数列表…)

对象调用方法的格式:
对象名.方法名(参数列表)
注意:
方法中参数列表中的第一个参数self,不需要手动传递,这个参数是由解释器在执行程序时,自动传递的
默认会将当前调用方法的对象引用传递进去

创建多个对象

问:如果通过同一个类,创建多次对象时,多次创建的对象是否是同一个?
答:否,创建的是多个类型相同,但地址不同的多个对象

动态绑定属性

在实例对象以后,为该对象添加一个属性

__init__方法

_init方法_

这个方法是一个魔法方法, 命名规则是前后各有两个下划线,
魔法方法是python当中,预设好的,具有特定功能的方法
一般这种方法,不需要手动调用,会自动调用执行

该方法会在创建对象的时候自动调用.
调用时,这个方法用来为对象进行初始化

str 方法和 del 方法

_str_方法(重点掌握)
格式化对象
该方法返回一个字符串值
当使用 str() 做类型转换时,会自动调用 该方法

当一个自定义类,没有实现该方法时,默认打印格式是 <模块名.类名 object at 地址>
eg:<main.Cat object at 0x02176610>

name,age
{name:tom, age:1}

调用该方法的场景:1. 通过 print() 函数打印时,会自动调用该方法2. 通过 str() 函数对自定义的对象进行类型转换时,会自动调用该方法__del__ 方法(了解)
该方法是用来在销毁对象时,回收释放资源使用的方法
该方法也是自动调用
当在使用 del 对象时,会调用方法

``

# 设计一些类,类在python中分为经典类和新式类
# 经典类1
class Hero():# 定义一个方法def skill(self):print("龟派气功波..")# 经典类2
class Person():def eat(self, food):print("吃", food)def sleep(self):print("每天都睡觉")# 新式类
class Dog(object):def bark(self):print("旺旺")# 实例 对象
class Person(object):# 第一个方法def eat(self, food):print("一个人在吃", food)# 第二个方法def sleep(self, t):print("一个人睡了", t, "个小时")tom = Person()
# 实例对象时,会在内存中分配一块内存空间,这个空间就是这个对象的位置
# 然后将这个地址引用返回对象名
print(tom)# 使用对象执行方法
tom.eat("米饭")# 可以实例多个对象
jack = Person()
jack.sleep(7)# 为对象动态绑定属性
class Person(object):# 第一个方法def eat(self, food):print(self.name, "在吃", food)tom = Person()
tom.name = "Tom"
# 动态为对象绑定属性时,给哪个对象绑定了属性,只能哪个对象有该属性,其他对象没有该属性的
# 如果在方法中引用改属性,那么这时没有改属性的对象调用这个方法会报错
tom.eat("海鲜")# _init_方法
# 该方法会在创建对象自动调用,并对该对象进行初始化操作
class Cat(object):# 实现魔法方法_init_,准备为对象初始化属性def __init__(self, name, age):print("init Run....", self)# 绑定属性时,使用self.属性名=值self.name = nameself.age = agedef show(self):print(self.name, self.age)tom = Cat("Tom", 1)
# 使用属性
print(tom.name)
print(tom.age)
jack = Cat("Jack", 2)# 在调用方法时,方法的第一个参数self不用手动传参,解释器自动调用该方法的对象传递进去
tom.show()
jack.show()# _str_()方法格式化对象
class Cat(object):def __init__(self, name, age, height):# 将三个属性绑定给对象self.name = nameself.age = ageself.height = height# 想打印对象的格式,需要实现这个方法def __str__(self):# print(f"名字:{self.name} 年龄:{self.age} 高度:{self.height}")# 该函数必须要有一个返回值,并且是字符串,哪怕是空串# 如果需要将对象的信息按照一定的格式进行格式化,那么可以在这里进行格式修饰# 修饰完后,可以将这个格式化字符串返回,让str()方法在执行时,得到该对象转换的字符串类型s = self.name.ljust(10) + str(self.age).ljust(5) + self.height.ljust(5)return stom = Cat("Tom", 1, "50cm")
print(tom)# _del_方法
class Cat(object):def __del__(self):print("del run...")tom = Cat()
print("over")

01Python基础阶段_Day07相关推荐

  1. 基础阶段(三)MDP核心——贝尔曼方程

    提示:转载请注明出处,若本文无疑侵犯到您的合法权益,请及时与作者联系. 基础阶段(三)MDP核心--贝尔曼方程 前言 一.MDP基本概念强化 1.1 状态s 1.2 动作a 1.3 状态转移概率P 1 ...

  2. 计算机会计期中考试,2017会计从业资格考试《会计电算化》基础阶段备考题

    2017会计从业资格考试<会计电算化>基础阶段备考题 一.单项选择题(下列各题,只有一个正确的答案,本题共20小题,每个小题1分,共20分.不选或错选均不得分) 1.通用财务报表软件的特点 ...

  3. 22考研基础阶段计划;超七成考研人已开始复习!

    原文链接:https://tm.qiaoqiaoxue.cn/article/69 在对考研人的调研当中,61%的同学都是从2~3月份开始备考.现在是3月份,也就是说,有7成考研人已经开始22考研复习 ...

  4. an tu tu html5 test,法语TEF基础阶段测试题和答案(下)

    1. Elle emprunte régulièrement des livres à la_____ municipale. A. salle B. banque C.bibliothèque D. ...

  5. an tu tu html5 test,法语TEF基础阶段测试题和答案[下]

    1. Elle emprunte régulièrement des livres à la_____ municipale. A. salle B. banque C.bibliothèque D. ...

  6. 运用JAVA基础阶段知识,模拟双色球机选抽奖过程

    运用JAVA基础阶段知识,模拟双色球机选抽奖过程 在控制台输入抽奖次数,进行双色球抽奖,并统计中奖结果 //双色球(机选) //红球33个选6个,蓝球16个选1个 //中奖号码设定为1,2,3,4,5 ...

  7. 华清远见-重庆中心-JAVA基础阶段技术总结

    系列文章目录 第一章 华清远见--重庆中心-JAVA基础阶段技术总结 第二章 文章目录 系列文章目录 文章目录 前言 一.关于java 1.发展历程 2.编程开发 3.java架构 4.java的特点 ...

  8. 基础阶段(四)——MDP的动态规划算法

    提示:转载请注明出处,若文章无意侵犯到您的合法权益,请及时与作者联系. 基础阶段(四)--MDP的动态规划算法 前言 一.什么是动态规划? 二.策略评估和策略改进 1.策略评估(Policy Eval ...

  9. 汤家凤线性代数基础阶段笔记并标记重点

    本文内容为汤家凤线性代数基础阶段笔记并标记重点,源文件已经上传到主页中的资源一栏中,有需要的可以去看看, 我主页中的思维导图中内容大多从我的笔记中整理而来,相应技巧可在笔记中查找原题,有兴趣的可以去 ...

最新文章

  1. ssh汉字乱码怎么办_ssh中文乱码解决
  2. 在CentOS上安装Python
  3. js 缺少标识符、字符串或数字
  4. 设计模式-工厂模式学习(初级)
  5. asp.net mysql 事务_ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)
  6. real210移植记录-u-boot2013.10引导linux3.10.30进入控制台
  7. Flask学习 一 基本结构
  8. 自己动手,实现一种类似ListT的数据结构(二)
  9. 修改csdn中字体颜色
  10. 在 Kotlin 序列化中使用 DataStore
  11. 坦白从宽,牢底坐穿?留学生如何应对美警察审问~~
  12. nodejs+java+python网上体育用品销售系统
  13. 在内存只有10M的空间中申请一块5M的数组空间,会导致OOM吗?
  14. ElasticSearch倒排索引原理 数据的写入与查询过程
  15. 开源的跨平台AI模型部署总有一款是你的菜
  16. ps处理黑眼圈黑眼袋的方法集合
  17. 阿里P8整理Mysql面试题答案,助你面试“脱颖而出”
  18. fd和FILE结构体
  19. Linux小白想成为007,先会用“John the Ripper工具”
  20. Node.js:npm install时出错 check python checking for Python executable “python2“ in the PATH

热门文章

  1. Apach目录和默认文件index html的关系
  2. 机器学习之神经网络(二)考试训练
  3. 被气晕过去的Anaconda和本地安装的python3.6关于安装包(markdown包)报错问题
  4. 他们花了3个月 跋涉65788光年去拯救一名“流浪玩家”
  5. CAD将未显示在工具栏中的功能添加到工具栏中——以QLEADER为例
  6. 用python实现将pdf转换成jpg格式文件(windows下)
  7. 技术项目管理最重要的4件事|定义、团队、产出物、复盘
  8. 求最大值及其下标(C语言)
  9. 使用 MadShaders 对 Linux 显卡进行跑分测试
  10. Android 10 适配攻略