1. 文件操作
1.1 文件的概念
文件是计算机中数据持久化存储的表现形式
1.2 文件操作基本语法
格式一(手工关闭格式):
1.打开文件: file = open("文件名","读/写模式")
2.操作文件:*
3.关闭文件:file.close()
格式二(免关闭格式):
1.打开文件: with open("文件名","读/写模式") as file:
2.操作文件:*
3.关闭文件(自动关闭文件)
注意: 文件操作完毕后必须关闭,否则内存将长期保持对文件的连接状态, 造成内存溢出的现象发生。
1.3 文件读写模式

1.4 读文件操作

1.5 写文件操作

2. 文件路径
2.1 文件路径概念
文件在计算机存储器(例如硬盘)中保存的位置称为文件路径
2.2 文件路径的分类
相对路径:从程序运行所在的目录位置描述其它文件的保存路径
| cc.txt | 当前目录下的cc.txt |
|---|---|
| aa\\cc.txt | 当前目录下的aa目录下的cc.txt |
| aa/cc.txt | 当前目录下的aa目录下的cc.txt |
绝对路径:从系统定义的存储位置描述文件的保存路径
D:\aa\bb\cc.txt
D:/aa/bb/cc.txt (推荐)
3. 文件的相关操作
3.1 os模块相关操作

"""
案例:windows复制文件
分析:
1. 整体文件复制采用 rb wb模式进行
2. 复制文件需要更改名称,变化是有规则的
3. 1.txt -> 1 - 副本.txt
"""
file1 = open("d:/1.txt","rb")
file2 = open("d:/2.txt","wb")
while True:
info = file1.read(1024)
if len(info) == 0:
break
else:
file2.write(info)
file1.close()
file2.close()
"""
案例:windows复制文件(版本二)
分析:
1. 整体文件复制采用 rb wb模式进行
2. 复制文件需要更改名称,变化是有规则的
3. 1.txt -> 1 - 副本.txt
"""
file1_name = "d:/1.txt"
idx = file1_name.rfind(".")
# print(file1_name[0:idx])
# print(file1_name[idx:])
file2_name = file1_name[0:idx]+ " - 副本" + file1_name[idx:]
file1 = open(file1_name,"rb")
file2 = open(file2_name,"wb")
while True:
info = file1.read(1024)
if len(info) == 0:
break
else:
file2.write(info)
file1.close()
file2.close()
4. 异常处理
4.1 异常概念
异常是程序执行过程中出现的非正常流程现象。
异常是无法避免的,只能先预估出可能出现的异常现象,并提供对应的处理机制,在异常出现后保障程序不被中断执行。
4.2 异常处理基本语法
格式一(常用):
try:
可能引发异常现象的代码
except:
出现异常现象的处理代码

try:
可能引发异常现象的代码
finally:
try代码块结束后运行的代码
格式三(完整格式):
try:
____可能引发异常现象的代码
except:
____出现异常现象的处理代码
else:
____未出现异常现象的处理代码
finally:
____try代码块结束后运行的代码
各代码块功能与执行说明:

4.3 异常精细化处理
异常处理可以根据不同种类的异常进行不同的处理方案设计,使用异常名称来进行区分。标准格式如下:
except 异常类名1 as 变量名:
____出现异常现象的处理代码
except 异常类名2 as 变量名:
____出现异常现象的处理代码
except 异常类名3 as 变量名:
____出现异常现象的处理代码
except Exception as 变量名:
____出现异常现象的处理代码

1.通过异常类名后面的变量名可以获取到具体异常信息

3.Exception类是所有异常类的父类,能够拦截所有的异常现象,通常设置成最后一级的捕获
4.4 异常对象主动抛出
异常现象可以使用主动爬出的形式来构造,语法格式如下:
raise 异常类对象

4.5 异常处理传递
异常出现后如果没有被捕获处理,该异常将会继续向下传递,到下一次调用位置。
情况一:使用try嵌套继续处理

最后调用处理

中间调用处理

5.自定义异常
5.1 自定义异常基本语法
class 自定义异常类名(Exception):
pass
5.2 自定义异常主动触发
raise 异常类对象
6. 模块
6.1 模块概念
模块指包含了Python程序的源文件,每一个独立的.py文件具有特定的功能,其功能可以被其它Python程序使用,该文件就构成了一个模块
模块的名称必须满足标识符命名规则
6.2 模块中的资源
模块中可以被外界使用的资源:类(定义)、函数、变量(全局)
6.3 模块资源导入
格式一(全部导入):
import 模块名
模块资源使用的格式:
模块名.类名
模块名.函数名
模块名.变量名
格式二(局部/全部导入):
from 模块名称 import 资源名称
from 模块名称 import 资源名称1,资源名称2
from 模块名称 import *
模块资源使用格式:
类名(直接使用)
函数名(直接使用)
变量名(直接使用)
注意:如果多次导入模块中具有同名的资源,后导入的模块资源覆盖先导入的模块资源
6.4 局部导入资源访问控制
如果使用格式二中的全部资源导入方式
from 模块名称 import *
可以在模块文件中第一行设置资源访问控制
__all__ = ["资源名称1","资源名称2"]

6.5 模块文件的执行代码处理
导入模块的同时会将原模块对应的.py文件进行执行,包括书写的运行代码,通过下列方式屏蔽原始模块中的运行代码:
if __name__ == "__main__":
执行代码
6.6 模块资源运行工作原理
模块资源导入时,解释器第一次地区原始资源文件,并生成缓存文件。再次使用时直接使用缓存文件,加速程序执行。

7. 包
7.1 包的概念
包就是项目结构中的文件夹/目录
7.2 包的作用
包用于将不同的模块进行分类管理,包本身不具有具体的含义,仅用于文件分成管理
注意事项:放入包中的模块使用时需要字模块名前面添加包名,中间使用.分割