01Python基础阶段_Day07

2021/10/26 17:10:43

本文主要是介绍01Python基础阶段_Day07,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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 = name
        self.age = age

    def 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 = name
        self.age = age
        self.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 s


tom = Cat("Tom", 1, "50cm")
print(tom)


# _del_方法
class Cat(object):
    def __del__(self):
        print("del run...")


tom = Cat()
print("over")


这篇关于01Python基础阶段_Day07的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程