[toc]

文件操作 ( IO 技术 )

    一个完整的程序一般都包括数据的存储和读取: 我们在前面写的程序数据都没有进行实际的存储, 因此 Python 解释器执行完数据就消失了. 实际开发中, 我们经常需要从外部存储介质 ( 硬盘, 光盘 U 盘等 ) 读取数据, 或者将程序产生的数据储存到文件中, 实现 "持久化" 保存.

    有基础的同学知道, 很多软件系统是将数据储存到数据库中: 数据库实际也是基于文件形式存储的, 本章我们就学习文件的相关操作.

文本文件和二进制文件

按文件中数据组织形式, 我们把文件分为文本文件和二进制文件两大类.

1. 文本文件

    文本文件存储的是普通 "字符" 文本, Python 默认为 unicode 字符集 ( 两个字节表示一个字符, 最多可以表示: 65536个 ), 可以使用记事本程序打开. 但是, 像 word 软件编辑的文档不是文本文件.

2. 二进制文件

    二进制文件把数据内容用 "字节" 进行存储, 无法用记事本打开. 必须使用专用的软件解码. 常见的由: MP4 视频文件, MP3 音频文件, JPG 图片, doc 文档等等.

文件操作相关模块概述

Python 标准库中, 如下是文件操作相关的模块, 我们会陆续给大家介绍.

名称                                          说明

io 模块                                      文件流的输入和输出操作

os 模块                                     基本操作系统功能, 包括文件操作

glob 模块                                  查找符合特定规则的文件路径名

fnmatch 模块                            使用模式来匹配文件路径名

fileinput 模块                             处理多个输入文件       

filecmp 模块                              用于文件的比较

csv 模块                                    用于 csv 文件处理

pickle 和 cPickle                        用于序列化和反序列化

xml 包                                        用于 XML 数据处理

bz2, gzip, zipfile, tarfile               用于处理压缩和压缩文件 ( 分别对应不同的算法 )       

创建文件对象 open()

open() 函数用于创建文件的对象, 基本语法格式如下:

    open( 文件名[,打开方式])

如果只是文件名, 代表在当前目录下的文件. 文件名可以录入全路径, 比如: D:\a\b.txt. 为了减少 "\" 的输入, 可以使用原始字符串: r "d:\b.txt". 示例如下:

    f = open(r"d:\b.txt", "a")

打开方式有如下几种:

模式        描述

r              读 read 模式

w             写 write 模式

a             追加 append 模式. 如果文件不存在则创建. 如果文件存在, 则在文件末尾追加内容

b            二进制 binary 模式 ( 可与其他模式组合使用 )

+             读, 写模式 ( 可以与其他模式组合使用 )

文本文件对象和二进制文件对象的创建:

    如果我们没有增加模式 "b", 则默认创建的是文本文件对象, 处理的基本单元是 "字符", 如果是二进制模式 "b", 则创建的是二进制文件对象, 处理的基本单元是 "字节".

文本文件的写入

基本的文件写入操作

文本文件的写入一般就是三个步骤:

1. 创建文件对象

2. 写入数据

3. 关闭文件对象

我们首先创建一个小程序, 体验一下文本文件的写入操作.

Python 第十节 第一课_二进制文件

执行结果:

Python 第十节 第一课_数据_02