### import加载底层原理
> 动态导入可以使用importlib
> 一个模块无论导入多少次,在整个解释器进程内有且仅有一次实例对象。
### import加载底层原理
> 动态导入可以使用importlib
> 一个模块无论导入多少次,在整个解释器进程内有且仅有一次实例对象。
### 模块导入import
> import 模块名,可叠加
> from ..... import
> 导入的本质是对象
> import 导入的是模块,from import 导入的是一个函数或者一个类。
### 模块化编程的流程
- 设计API,进行功能描述
- 编码实现功能
- 编写测试代码
- 使用私有函数实现不被外部客户端调用的模块函数
> API 使用来描述模块中提供函数和类的功能描述和使用方式描述。
### 模块程序设计理念
> 程序持续复杂化,函数和类更加多了,模块诞生了,模块的叠加使用产生了包。
> 标准库模块:random,math,time
>为什么需要模块化编程,模块便于后期的重复使用。
> 优势
- 便于分解任务
- 代码的复用
- 可维护性q
## 十三、递归算法原理
> 概念:递归结构包括两个部分
> 本质:直接或间接的调用自己
- 定义递归头
- 递归体
### 文件的压缩和解压缩
## 十二、shutil 模块
> 概念:shutil模块是用来做文件拷贝,移动删除以及压缩解压缩操作
### walk方法遍历所有文件
> os.walk() 返回一个三个元素的元组
- dirpath
- dirnames
- filenames
### os.path模块
- isabs:判断绝对路径
- isdir: 判断是否为目录
- isfile: 判断是否为文件
- exists: 判断是否存在
- abspath: 返回绝对路径
- getsize:返回文件的大小
- join:连接多个path
- split 对路径进行分割,以列表形式返回
- walk 递归遍历目录
## 十一、os模块
### os调用操作系统文件和命令
> os.system 可以帮助我们直接调用系统的命令
> os.startfile 直接调用可执行的文件。
十、csv文件的读写
> 概念:csv十逗号分隔符文本格式。
- 只能处理简单字符串
- 不能嵌入图片
- 无字体颜色,无单元格宽高设定
## 九、使用pickle序列化
- pickle.dump(obj,file) obj就是要被序列化的对象,file指的是要存储的文件。
- pickle.load(file) 从file读取数据,反序列化对象。
## 八、文件对象常用属性方法和总结
- 文件对象的属性:name,mode,closed
- 文件对象的打开模式: r,w,a,b
- 文件对象的常用方法:read, readline, readlines, write, writelines(未添加换行符), seek, close.
- seek(offset,whence); whence: 0:从文件头开始计算,1:从当前位置开始,2:从尾部开始
## 六、二进制文件的读写
- wb
- ab
- rb
## 七、文件对象的常用属性和方法
## 五、enumerate()函数
## 四、文本文件的读取
- read: 从文件中读取size个字符,不传的话默认读取整个文件。
- readline:读取一行内容作为一个结果返回。
- readlines:每一行作为一个字符串存入列表,返回该列表。
> 结构: with open(r"path","r",encoding=""utf-8) as f:
### with上下文管理
with open(r"path","w")as f
f.writelines(f)
> 如果要在一个程序中打开多个文件,f1,f2要区分开。
## 三、关闭流要点
> 使用异常机制
### write和writelines
writelines:把列表写入文件中,不添加换行符。自己手动换行
### close()关闭流
> 使用finally或者with关键字实现无论何种情况都能关闭打开的文件对象。
## 二、编码知识
### 常用编码介绍
> ASCII: 表示现代英语及其他西欧语言
> 兼容 utf-8,gbk。
> unicode: 万国码,2个字节表示一个字符。Python默认为unicode。
> gbk: 英文一个字节,汉字两个字节。 utf-8:英文一个字节,汉字三个字节。
### 中文乱码问题
> windows默认gbk,linux默认utf-8.当我们打开时,以gbk打开 所以是乱码。
> f=open(r“path“,"")
### 一、file文件操作
> 文本文件:存储的是普通字符文本,默认为unicode字符集。可以使用记事本打开
> 二进制文件:把数据内容用字节进行存储,无法使用记事本打开。
> 文件模块相关操作:
- os模块:基本操作系统,主要为了文件操作
- Io模块:文件流的输入和输出操作
- cvs模块:用于cvs文件处理
- pickle:用于序列化和反序列化
- fileinput:处理多个输入文件
> 创建文件对象 open():f=open(r“path”,“a”)
- r:读模式
- w:写模式
- a:追加模式,文件不存在创建,文件存在,再文件末尾追加内容
- b: 二进制模式
如果没有追加b,创建的是文本文件对象,加入b创建的是二进制文件对象,处理的基本单元是字节。
> 文件的写入步骤:
- 创建文件对象
- 写入数据
- 关闭文件对象