Python 语言-第七章模块与文件操作
第七章模块与文件操作
7.1 模块
7.1.1 认识模块
- 模块英文为 Modules
- 函数与模块的关系
- 一个模块可以包含多个模块
- 在 Python 中,一个扩展名为".py"的程序文件就是一个模块(module)
- 模块的好处:
- 方便其他程序和脚本的导入、使用
- 避免函数名和变量名冲突
- 提高代码的可维护性、可重用性
- 拓展脚本、文件、模块的基本概念:
- 这三者并无太大区别
- 文件:通常,Python 文件是包含代码的任何文件。大多数Python文件的扩展名为 .py
- 脚本:Python 脚本是基于命令行执行以完成某项任务的一类文件
- 模块:Python 模块是从另一个模块、脚本或解释器中导入的文件
7.1.2 模块的定义与使用
-
创建模块
- 新键一个 .py 文件,名称不要与 python 自带的标准模块名称相同
-
导入整个模块
-
语法格式:
import 模块名1 [as 别名1][,模块2[别名2]]……
-
-
从模块中导入指定项目使用
from……import语句,语法格式:from 模块名 import 项目1,[,项目2,[,...,项目n]] from 模块名 import * #指定模块导入所有项目 -
调用格式:
模块名或别名.函数名(参数)
7.1.3 main() 函数
-
main 函数的语法格式:
if __name__ == '__main__': pass -
main 函数有什么用?
- 可以判断当前 python 脚本是否是直接被 python 直接调用执行
- 如果 python 脚本被作为模块引入时,其中的 main() 函数及后面的代码将不会被执行。
- 可以判断当前 python 脚本是否是直接被 python 直接调用执行
-
原理:
- main() 函数可以看成是python程序的入口,其实也就是个 if 条件语句
- 在每个模块的定义中都包括一个记录模块名称的变量 __ name __
- 如果是当前模块运行,不管哪个位置的 __ name __ 属性,值都是__ main __
- 当这个脚本作为模块被导入到另一个 .py 文件中,并且在这个.py 文件运行,此时的__ name __属性就会变成对应文件的文件名
- 然后通过 if 语句判断当前模块的名称,如果是 __ main __,后续代码就会运行
7.1.4 包
-
在 python 中的包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下
-
包的作用
- 使代码规范
- 避免模块名称冲突
-
包于目录的区别
- 包:包含__ init __.py 文件的目录称为包
- 目录:不含__ init __.py 文件的称为目录
-
导入包跟导入模块基本类似:
import 包名.模块名
7.1.5 常见的内置模块
-
模块名 描述 sys 与 python 解释器及环境操作相关的标准库 time 与时间相关的各种函数的标准库 os 访问操作系统服务功能的标准库 calender 与日期相关的各种函数的标准库 urllib 用于读取来自网上(服务器)的数据标准库 json 用于使用 json 序列化和反序列化对象 re 用于在字符串中执行正则表达式匹配和替换 math 提供标准算数运算函数的标准库 decimal 用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算 logging 提供了灵活的记录事件、错误、警告、和调试信息等日志信息的功能
7.1.6 第三方模块的安装使用
-
安装
-
以 windows 为例,语法格式:
pip install 模块名 -
例如:
C:\Users\smzy> pip install scrapy -
一些第三方模块下载慢,可能使用国内的网站或者镜像
-
-
使用
-
与内置模块一样的使用方法:
import 模块名
-
7.2 文件操作
7.2.1 常见字符编码格式
-
python 解释器使用的是 Unicode (内存)
-
.py 文件在磁盘上使用的 UTF-8 储存(外存)
-
7.2.2 文件读写原理
- 文件读写操作,通常称为”I/O操作“
- 读:从硬盘到内存
- 写:从内存到硬盘
- python 读取文件文件遵从”先进先出“规则,先进入”管道“的先出来,所以基本上 python 程序是从上而下逐行运行的
- 文件读写操作流程:

- 操作原理:

7.2.3 文件读写操作
-
使用内置函数
open()创建文件对象- 使用 open() 创建的对象一定要记得关闭对象,否则会造成严重的资源浪费
-
语法格式:
open(filename[,mode][,encoding])filename:要创建或者要打开的文件名称
mode:打开的模式(默认为只读)。下一节会介绍
encoding:打开的编码格式(默认为 GBK)
-
例如:
file1 = open(r'D:\PyCham','a',encoding = 'UTF-8') file1.read() #对文件对象进行操作 file1.close()
-
-
原理:
- 通过 I/O 流将磁盘文件的内容与程序中的对象中的内存进行同步

- 通过 I/O 流将磁盘文件的内容与程序中的对象中的内存进行同步
7.2.4 文件常见的打开模式
-
以文件的数据组织形式分为:二进制文件和文本文件
- 二进制文件:把数据内容以“字节”进行存储,无法用记事本打开
- 例如:MP3 音频文件、jpg 图片、.doc 文档
- 文本文件:以普通“字符”方式储存,默认为 Unicode 字符集,可以使用记事本打开
- 二进制文件:把数据内容以“字节”进行存储,无法用记事本打开
-
打开模式:
打开模式 描述 r 以只读模式打开文件。文件的指针会放在文件的开头 w 以只写模式打开文件,如果文件不存在,则创建文件;如果文件存在,则覆盖文件内容。文件的指针会放在文件的开头 a 以追加模式打开文件,如果文件不存在,则创建文件;如果文件存在,则想文件追加文件内容。文件的指针会放在文件的末尾 b 以二进制方式打开文件,不能单独使用,需要与其他模式一起使用,如:rb、wb + 以读写方法打开文件,不能单独使用,需要与其他模式一起使用,如:a+
7.2.5 文件对象的常用方法
-
方法名 说明 参数 read([size]) 从文件中读取 size 个字节或字符内容返回;如果省略 size,则一次读取文件所有内容 size:文件读取的字节数 readline() 从文本文件中读取一行内容 readlines() 将文本文件中每一行都作为独立的字符串对象,放入列表中返回 write(str) 将字符串 str 内容写入文件 writelines(s_list) 将字符串列表 s_list 写入文本文件,不添加换行符 s_list :字符串列表 seek(offset[,whence]) 将文件指针移动到新的位置 offset:相对于 whence 的位置,为正往结束的方向移动,为负数往开始方向移动
whence:不同的值代表不同含义;0:从文件头开始计算(默认情况);1:从当前位置开始计算;2:从文件尾开始计算tell() 返回文件指针当前位置 flush() 将缓存区内容写入文件,但是不关闭文件 close() 将缓存区内容写入文件,同时不关闭文件,释放文件对象相关资源
7.2.6 with 语句
-
语法格式:
with 上下文表达式 [as 上下文表达式的别名]: with 语句体上下文表达式:是指其表达式中需要实现”上下文管理器协议“,才能使用 with 语句
别名:方便后续对上下文表达式中的对象进行操作
-
上下文管理器协议:一个类对象在 Python 中,只要实现以下方法,就实现了上下文管理器协议:
__enter__:在进入with语法块之前调用,返回值会赋值给with的target__exit__:在退出with语法块时调用,一般用作异常处理
-
而这个类对象的实例对象就被称为上下文管理器,所以 含有上下文表达式的 with 语句,也被称为上下文管理器
-
特点:with 语句可以自动管理上下文资源,能使上下文资源,无论出现什么原因都可以跳出 with 块,都能确保文件的正确关闭
-
使用 with 语句来进行文件的读写能即使达到释放资源的目的
- 离开运行时,上下文会自动调用上下文管理器的特殊方法
__exit__(),所以就不用手动使用close()方法释放内存了
- 离开运行时,上下文会自动调用上下文管理器的特殊方法
7.3 对目录或者文件的操作
-
主要介绍一下 os 模块和 os.path 模块
- 这两个模块都是主要用于对目录或者文件的操作
-
os 模块
-
python 内置的与操作系统功能和文件系统相关的模块
-
这个模块中的语句的执行结果通常与操作系统有关
-
在不同的操作系统上运行,得到的结果可能不同
-
启动应用
os.system('应用.exe')-
例如:
import os #启动系统软件 # os.system('calc.exe') #计算器 # os.system('notepad.exe') #记事本
-
-
调用可执行文件
os.startfile('可执行文件')-
例如:
import os #调用可执行文件 #os.startfile('D:\qq.exe') #启动qq
-
-
os 模块操作目录的相关函数
函数 描述 getcwd() 返回当前工作目录 listdir(path) 返回指定路径下的文件和目录信息 mkdir(path[,mode]) 创建目录 mkdirs(path1/path2……[,mode]) 创建多级目录 rmdir 删除目录 removedires(path1/path2……) 删除多级目录 chdir(path) 将 path 设置为当前工作目录
-
-
os.path 模块
-
操作目录的相关函数
函数 说明 abspath(path) 用于获取文件或目录的绝对路径 exists(path) 用于判断文件和目录是否存在,如果存在返回 True,不存在返回 False join(path,name) 将目录与目录或文件名拼接起来 splitext() 分离文件名和拓展名 basename(path) 从一个目录中提取文件名 dirname(path) 从一个路径中提取文件路径,不包括文件名 isdir(path) 用于判断是否为路径
-

浙公网安备 33010602011771号