## 三、_sys.path 和模块搜索路径
> 寻找顺序
- 内置模块
- 当前目录
- 程序的主目录
- pythonpath 目录
- 标准三方库
- .pth文件内容
- sys.path.append() 临时添加目录
### .pth文件的写法
在site-package目录下添加.pth文件,并在文件中填写内容。
## 三、_sys.path 和模块搜索路径
> 寻找顺序
- 内置模块
- 当前目录
- 程序的主目录
- pythonpath 目录
- 标准三方库
- .pth文件内容
- sys.path.append() 临时添加目录
### .pth文件的写法
在site-package目录下添加.pth文件,并在文件中填写内容。
## 包
### 包的概念
> 当一个项目中有很多个模块时,用包去封装,类似于文件夹。
### 导入包
import 包名
from 包 import 模块
==导入包的本质是导入了包的__init__.py文件。
### 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关键字实现无论何种情况都能关闭打开的文件对象。