
文件:存储在某种介质上的信息集合
存储:外部存储介质(硬盘)
识别:文件名
分类
存取方式:顺序存取,随机存取
文件内容表示方式:二进制文件,文本文件
文件是操作系统和用户进行数据管理的单位。文件一般存储在外部介质上,在使用时将文件调入内存。在程序中使用文件可以实现数据的输入和输出,长久保存程序的中间数据和结果数据,实现程序与数据的分离。
根据文件的编码方式,可以将文件分为文本文件和二进制文件。文本文件由字符组成,因此也便于显示,可读性强。二进制文件将数据以在内存中的存储形式存放到磁盘文件中。
1)用二进制形式输出时:可节省外存空间和转换时间,一个字节并不对应一个字符,不能直接输出字符形式。可读性差,常用于保存中间结果数据和运行程序。
2)文本形式输出时:一个字节与一个字符一一对应,便于对字符进行逐个处理,也便于输出字符;占存储空间较多;要花费转换时间。
Python中可以处理二进制文件以及文本文件,对二进制文件的操作可以选择是否使用缓冲区,文本文件均使用缓冲区处理。
缓冲区是内存中的区域,由于内存与内存之间的数据交换比内存与外存储器之间的数据交换速度快,因此当程序中需要进行频繁的文件读写操作时,使用缓冲区可以减少I/O操作从而提高效率,也方便管理。

(1)打开文件
Python通过open函数用来打开文件,提供了初始化输入/输出(I/O)操作的通用接口。open()内建函数成功打开文件后会返回一个文件对象,否则引发一个错误。当操作失败,Python会产生一个IOError异常。
Open函数打开文件语法如下:
fp = open(file, mode='r', buffering=-1)
文件名的路径:
DOS和Windows下,路径分隔符用“\\”或用“r”指明为原始字符串,如“d:\\f.txt”或“r'd:\f.txt”
Linux和Mac系统中,路径用“/”分隔,如“/User/DZ/data”
“/”也可以在Windows中作为路径分隔符用

open()函数-mode参数
Mode | Function |
r | 以读模式打开,文件必须存在 |
w | 以写模式打开,若文件不存在则新建文件,否则清空原内容 |
x | 以写模式打开,若文件已经存在则失败 |
a | 以追加模式打开,若文件存在则向结尾追加内容,否则新建文件 |
b | 以二进制模式打开,可添加到其他模式中使用 |
t | 以文本模式打开(默认),可添加到其他模式中使用 |
+ | 以读/写模式打开,可添加到其他模式中使用 |
格式:fp = open(file, mode='r', buffering=-1)
mode为可选参数,默认值为“r”
buffering也为可选参数,默认值为-1,用于设置缓冲策略的可选整数
其他常用参数:encoding(指定编码字符集)
open()函数返回一个文件(file)对象
默认状态是以'r'与't'模式打开。
>>> fp = open('a.txt')
>>> fp = open('record.data' , 'wb')
文件打开模式:
Mode | Function |
r+ | 以读写模式打开,必须打开已经存在的文件,读写从头部开始 |
w+ | 以读写模式打开,新建或是清空原内容,读的内容为新写入内容 |
a+ | 以读和追加模式打开,若打开已经存在的文件,读写从尾部开始 |
wb | 以二进制写模式打开(参见w) |
rb+ | 以二进制读写模式打开(参见r+),可写成rb+、r+b、+rb |
wb+ | 以二进制读写模式打开(参见w+) |
标准文件
当程序启动后,以下三种标准文件有效
标准文件 | 文件对象 | 对应的设备 |
标准输入 | stdin | 键盘 |
标准输出 | stdout | 显示器 |
标准错误 | stderr | 显示器 |
(2)文件关闭
格式: fp.close()
fp为文件对象
关闭文件是打开文件的逆操作,切断文件对象与外存储器中文件之间的联系.
>>> fp = open(r'd:\nfile.txt', 'r')
>>> type(fp)
<class '_io.TextIOWrapper'>
>>> fp.name
'd:\\nfile.txt'
>>> fp.mode
'r'
>>> fp.closed
False
>>> fp.close()
>>> fp.closed
True
文件使用完后如果不关闭,则当程序运行结束时由系统自动关闭。
不建议使用系统自动关闭的原因:
操作系统允许程序同时打开的文件个数是有限的,
写入内容已处理完若缓冲区还未满,缓冲区的内容要等到程序运行结束时由系统自动关闭该文件后才能写出,此时若系统发生非正常情况当前缓冲区中的未写到外存储上的内容就可能丢失掉。

