目录
一、文件介绍
1. 文本文件
2. 二进制文件
二、文件操作
1. 文件打开
2. 文件读入
3. 文件写入
4. 文件关闭
5. 文件关闭异常处理
一、文件介绍
按文件中数据的组织形式把文件分为文本文件和二进制文件两类。
1. 文本文件
文本文件存储的是常规字符串,由若干文本行组成,通常每行以换行符'\n'结尾。常规字符串是指记事本或其他文本编辑器能正常显示、编辑并且人类能够直接阅读和理解的字符串,如英文字母、汉字、数字字符串。文本文件可以使用字处理软件如gedit、记事本进行编辑。
2. 二进制文件
二进制文件把对象内容以字节串(bytes)进行存储,无法用记事本或其他普通字处理软件直接进行编辑,通常也无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取、显示、修改或执行。常见的如图形图像文件、音视频文件、可执行文件、资源文件、各种数据库文件、各类office文档等都属于二进制文件。
二、文件操作
1. 文件打开
如果执行正常,open()函数返回1个文件对象,通过该文件对象可以对文件进行读写操作。如果指定文件不存在、访问权限不够、磁盘空间不足或其他原因导致创建文件对象失败则抛出异常。
open(file, mode='r', buffering=-1, encoding=None, errors=None,
newline=None, closefd=True, opener=None)
'''
file参数指定了被打开的文件名称。
mode参数指定了打开文件后的处理方式。
buffering参数指定了读写文件的缓存模式。0表示不缓存,1表示缓存,如大于1则表示缓冲区的大小。默认值-1表示由系统管理缓存。
encoding参数指定对文本进行编码和解码的方式,只适用于文本模式,可以使用Python支持的任何格式,如GBK、utf8、CP936等等。
'''
文件打开模式 | 描述 |
r | 只读模式(默认模式,可省略),如果文件不存在则抛出异常 |
w | 覆盖写模式,文件不存在则创建,存在则前完全覆盖 |
x | 创建写模式,文件不存在则创建,存在则抛出异常 |
a | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
b | 二进制模式(可与其他模式组合使用) |
t | 文本模式(默认模式,可省略) |
+ | 读、写模式(可与其他模式组合使用 |
rb | 以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头 |
r+ | 打开一个文件用于读写,文件指针将会放在文件的开头 |
w+ | 打开一个文件用于读写,如果该文件以存在则将其覆盖,如果该文件不存在,创建新文件 |
a+ | 打开一个文件用于读写,文件打开时是追加模式。如果该文件以存在,文件指针将会放在文件的结尾;如果该文件不存在,创建新文件用于读写。 |
代码实例
f = open("f.txt", "r",, encoding="utf-8") # open()函数打开文件 ; “r” 只读模式打开文本文件
txt = f.read() # 对全文txt进行处理
f.close() # .close()方法关闭文件
2. 文件读入
文件读入方法 | 描述 | 代码实例 |
.read([size]) | 读入全部内容,如果给出参数,读入前size长度 | txt = f.read(2) |
.readable([size]) | 测试当前文件是否可读 | txt = f.readable(2) |
.readline([size]) | 从文本文件中读取一行内容作为结果返回,如果给出参数,读入该行前size长度 | txt = f.readline() |
.readlines([hint]) | 读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行 | txt = f.readlines() |
代码实例1
f = open("123.txt","r",encoding="utf-8") # open()函数打开文件 ; “r” 只读模式打开文本文件
print(f.readline())
f.close() # .close()方法关闭文件
代码实例2:文件打开异常处理
try:
f = open('study.txt','r')
for r in f:
print(r.strip())
f.close()
except FileNotFoundError:
print('找不到文件')
except Exception as e:
print(e.args)
>>> 找不到文件
3. 文件写入
文件写入方法 | 描述 | 代码实例 |
.write(s) | 将s的内容写入文件 | f.write("人生苦短,我学Python!") |
.writelines(lines) | 将字符串列表写入文本文件,不添加换行符 | f.writelines(["中国","美国","俄国"]) >>> 中国美国俄国 |
.writable() | 测试当前文件是否可写 | f.writeable("人生苦短,我学Python!") |
.seek(offset[, whence]) | 改变当前文件操作指针的位置,offset表示相对于whence的位置。whence为0表示从文件开头开始计算,1表示从当前位置开始计算,2表示从文件结尾开始计算,默认为0 | f.seek(0) # 回到文件开头 |
代码实例
f = open("123.txt","w+",encoding="utf-8") # 写入文件
ls = ["中国","法国","美国"]
f.writelines(ls) # 写入内容
f.seek(0) # 回到文件开始
for line in f: # 逐行读入并打印内容
print(line)
f.close() # 关闭文件
4. 文件关闭
当对文件内容操作完以后,一定要关闭文件对象,这样才能保证所做的任何修改都确实被保存到文件中。
f.close()
5. 文件关闭异常处理
即使写了关闭文件的代码,也无法保证文件一定能够正常关闭。例如,如果在打开文件之后和关闭文件之前发生了错误导致程序崩溃,这时文件就无法正常关闭。在管理文件对象时推荐使用with关键字,可以有效地避免这个问题。with语句的用法如下:
with open(filename, mode, encoding) as f: # 这里通过文件对象f来读写文件内容的语句
代码实例
s = 'Hello world\n文本文件的读取方法\n文本文件的写入方法\n'
with open('sample.txt', 'w') as f: # 文件打开
f.write(s) # 文件写入
with open('sample.txt') as f: # 文件打开
print(f.read()) # 文件读取