python学习4

本文详细介绍了Python中的文件操作,包括写入、读取、移动文件指针等,并探讨了面向对象编程的概念,如类与对象、继承、封装、多态。讲解了单继承、多继承、子类重写父类方法、私有权限以及异常处理。还涵盖了自定义异常和模块包的使用。
摘要由CSDN通过智能技术生成
⽂件对象⽅法

对象对象.write('内容')
  1. w 和 a 模式:如果⽂件不存在则创建该⽂件;如果⽂件存在, w 模式先清空再写⼊, a 模式

    直接末尾追加。

  2. r 模式:如果⽂件不存在则报错。

⽂件对象.read(num) 

num表示要从⽂件中读取的数据的⻓度(单位是字节),如果没有传⼊num,那么就表示读取⽂
件中所有的数据。

readlines()
readlines可以按照⾏的⽅式把整个⽂件中的内容进⾏⼀次性读取,并且返回的是⼀个列表,其中每⼀⾏
的数据为⼀个元素。

f = open('test.txt')
content = f.readlines()
# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc']
print(content)
# 关闭⽂件
f.close()

readline():readline()⼀次读取⼀⾏内容。

f = open('test.txt')
content = f.readline()
print(f'第⼀⾏: {content}')
content = f.readline()
print(f'第⼆⾏: {content}')
# 关闭⽂件
f.close()

seek()
作⽤:⽤来移动⽂件指针。
语法如下:

⽂件对象.seek(偏移量, 起始位置)

起始位置:
0:⽂件开头
1:当前位置
2:⽂件结尾

关闭

⽂件对象.close() 
文件备份
# 1. 用户输入目标文件  sound.txt.mp3
old_name = input('请输入您要备份的文件名:')
# print(old_name)
# print(type(old_name))

# 2. 规划备份文件的名字
# 2.1 提取后缀 -- 找到名字中的点 -- 名字和后缀分离--最右侧的点才是后缀的点 -- 字符串查找某个子串rfind
index = old_name.rfind('.')
# print(index)

# 4. 思考:有效文件才备份 .txt
if index > 0:
    # 提取后缀
    postfix = old_name[index:]

# 2.2 组织新名字 = 原名字 + [备份] + 后缀
# 原名字就是字符串中的一部分子串 -- 切片[开始:结束:步长]
# print(old_name[:index])
# print(old_name[index:])
# new_name = old_name[:index] + '[备份]' + old_name[index:]
new_name = old_name[:index] + '[备份]' + postfix
print(new_name)

# 3. 备份文件写入数据(数据和原文件一样)
# 3.1 打开 原文件 和 备份文件
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')

# 3.2 原文件读取,备份文件写入
# 如果不确定目标文件大小,循环读取写入,当读取出来的数据没有了终止循环
while True:
    con = old_f.read(1024)
    if len(con) == 0:
        # 表示读取完成了
        break

    new_f.write(con)

# 3.3 关闭文件
old_f.close()
new_f.close()

⽂件和⽂件夹的操作
"""
1. 导入模块os
2. 使用模块内功能
"""
import os

# 1. rename(): 重命名
# os.rename('1.txt', '10.txt')

# 2. remove(): 删除文件
# os.remove('10.txt')

# 3. mkdir():创建文件夹
# os.mkdir('aa')

# 4.rmdir(): 删除文件夹
# os.rmdir('aa')

# 5. getcwd(): 返回当前文件所在目录路径
# print(os.getcwd())

# 6. chdir():改变目录路径
# os.mkdir('aa')
# 需求:在aa里面创建bb文件夹: 1. 切换目录到aa,2创建bb
# os.mkdir('bb')

# os.chdir('aa')
# os.mkdir('bb')

# 7. listdir(): 获取某个文件夹下所有文件,返回一个列表
# print(os.listdir())
# print(os.listdir('aa'))

# 8. rename() -- 重命名文件夹  bb重命名为bbbb
os.rename('bb', 'bbbb')
面向对象

类和对象的关系:⽤类去创建⼀个对象。

类是对⼀系列具有相同特征和⾏为的事物的统称,是⼀个抽象的概念,不是真实存在的事物。
特征即是属性
⾏为即是⽅法

定义类

class 类名():
代码
......

类名要满⾜标识符命名规则,同时遵循⼤驼峰命名习惯

创建对象

对象又名实例

对象名 = 类名()
# 需求:洗衣机,功能:能洗衣服
# 1. 定义洗衣机类
"""
class 类名():
    代码
"""


class Washer():
    def wash(self):
        print('能洗衣服')


# 2. 创建对象
# 对象名 =  类名()
haier = Washer()


# 3. 验证成果
# 打印haier对象
print(haier)

# 使用wash功能 -- 实例方法/对象方法 -- 对象名.Wash()
haier.wash()

self

self指的是调⽤该函数的对象。

class Washer():
    def wash(self):
        print('洗衣服')
        print(self)


haier = Washer()
print(haier)

haier.wash()

# 由于打印对象和打印self得到的内存地址相同,所以self指的是调用该函数的对象

类里面获取对象

添加和获取对象属性

添加

对象名.属性名 = 值

获取属性

对象名.属性名

实例

class Washer():
    def wash(self):
        print('洗衣服')


haier1 = Washer()

# 添加属性  对象名.属性名 = 值
haier1.width = 400
haier1.height = 500

# 获取属性 对象名.属性名
print(f'洗衣机的宽度是{haier1.width}')
print(f'洗衣机的高度是{haier1.height}')

类⾥⾯获取对象属性

语法

self.属性名
class Washer():
    def wash(self):
        print('洗衣服')

    # 获取实例属性
    def print_info(self):
        # self.属性名
        # print(self.width)
        print(f'洗衣机的宽度是{self.width}')
        print(f'洗衣机的高度是{self.height}')


haier1 = Washer()

# 添加属性
haier1.width = 400
haier1.height = 500

# 对象调用实例方法
haier1.print_info()

魔法方法

_init_()
在Python中,__xx__()   的函数叫做魔法⽅法,指的是具有特殊功能的函数 
# 目标: 定义init魔法方法设置初始化属性 并访问调用
"""
1. 定义类
    init魔法方法: width 和 height
    添加实例方法:访问实例属性

2. 创建对象
3. 验证成果
    调用实例方法
"""


class Washer():
    def __init__(self):
        # 添加实例属性
        self.width = 500
        self.height = 800

    def print_info(self):
        print(f'洗衣机的宽度是{self.width}')
        print(f'洗衣机的高度是{self.height}')


haier = Washer()

haier.print_info()

带参数的魔法方法

# 1. 定义类:带参数的init:宽度和高度; 实例方法:调用实例属性
class Washer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值