目录
文件操作 ( IO 技术)
一个完整的程序一般都包括数据的存储和读取; 我们在前面写的程序数据都没有进行实际的存储, 因此, Python解释器执行完数据就消失了; 实际考法中, 我们经常需要从外部存储介质 ( 硬盘, 光盘, U盘等 ) 读取数据, 或者将程序产生的数据存储到文件中; 实现”持久化”保存;
很多软件系统是将数据存储在数据库中; 数据库实际也是基于文件形式存储的;
文本文件和二进制文件
按文件中数据组织形式, 我们把文件分为文本文件和二进制文件两大类;
=> 文本文件
文本文件存储的是普通”字符”文本, 默认为unicode字符集 ( 两个字节表示一个字符, 最多可以表示:65536个 ) , 可以使用记事本程序打开直接阅读; 但是, 想word软件编辑的文档不是文本文件,因为用记事本打开不能直接阅读;
=> 二进制文件
二进制文件把数据内容用”字节”进行存储, 无法用记事本打开; 必须使用专用的软件解码; 常用的有: MP4视频文件, MP3音频文件, JPG图片, doc文档等等;
文件操作相关模块概述
Python标准库中, 如下是文件操作相关的模块
名称 | 说明 |
io模块 | 文件流的输入和输出操作 input output |
os模块 | 基本操作系统功能, 包括文件操作 |
glob模块 | 查找符合特定规则的文件路径名 |
fnmatch模块 | 使用模式来匹配文件路径名 |
fileinput模块 | 处理多个输入文件 |
filecmp模块 | 用于文件的比较 |
cvs模块 | 用于csv文件处理 |
pickle和cPickle | 用于序列化和反序列化 |
xml包 | 用于处理XML数据处理 |
bz2, gzip, zipfile, zlib, tarfile | 用于处理压缩和解压缩文件(分别对应不同的算法) |
创建文件对象open()
open() 函数用于创建文件对象, 基本语法格式如下:
open( 文件名[,打开方法] )
如果只是文件名, 代表在当前目录下的文件; 文件名可以录入全路径, 比如: D:\a\b.txt; 为了减少”\”的输入, 可以使用原始字符串: r “d:\b.txt”; 示例如下: ( r 写了代表这是一个资源路径 )
f = open(r”d:\b.txt”,”a”)
打开方法有如下几种:
模式 | 描述 |
r | 读read模式 |
w | 写write模式, 如果文件不存在则创建, 如果文件存在, 则重写新内容 |
a | 追加append模式, 如果文件不存在则创建,如果文件存在,则在文件末尾追加内容 |
b | 二进制binary模式(可与其他模式组合使用) |
+ | 读, 写模式(可与其他模式组合使用) |
文件也是对象, 操作文件第一步就要创建文件对象;
文本文件对象和二进制文件对象的创建:
如果我们没有增加模式”b”, 则默认创建的是文本文件对象; 处理的基本单元是”字符”; 如果是二进制模式”b”,则创建的是二进制文件对象; 处理的基本单元是”字节”;
文本文件的写入
基本的文件写入操作
文本文件的写入一般就是三个步骤:
=> 创建文件对象
=> 写入数据
=> 关闭文件对象
文件写入完成必须关闭; 因为调用了操作系统相关的资源, 必须关闭;不然资源浪费;
#文本写入操作测试
f = open("a.txt","a") #追加append模式,追加新内容
s = "好好学习,天天向上\n";
f.write(s)
f.close()
f1 = open("b.txt","w") #如果文件存在, 则重写新内容
s = "好好学习,天天向上\n";
f1.write(s)
f1.close()