读写文件
IO在计算机中指Input/Output,IO编程即实现本地磁盘、网络的数据传输。
文件读取
open方法:
open(name,[mode,buffering])
只有name是必须得,后面的模式、缓冲是可选的,默认是读模式,默认无缓冲区。该方法返回一个文件对象。
name参数:
例子1:
f = open(r'd:\test\hamlet1.txt')
mode参数:
mode的值 | 描述 |
r | 读模式 |
w | 写模式 |
a | 追加模式 |
b | 二进制模式(可与其他模式一起使用) |
+ | 读写模式(可与其他模式一起使用) |
处理文本时,一般不使用b参数,在处理音乐、图片、视频等类型文件才需要使用二进制模式。
buffering 文件缓冲区参数
什么叫缓冲?数据直接写道磁盘上就是没有缓冲,缓冲就是数据先写到内存里,容量达到指定值后再一次性写道磁盘上,因为写道内存相对较快,所以在写大数量的数据时效率更高。一般在flush或者close之后数据一次性从内存缓冲区写到磁盘上。
该参数是0时,表示没有缓冲区,是负数时代表使用默认缓冲区大小,是正数时代表缓冲区大小。
文件读取方法
文件读取一般分为按照字节、按照字符读取,常用方法是read()、readlines()、close()。
read()方法是一次性读取。不适用大文件。
read(size)一次读取size字节内容。
readline()一次读取一行。
readlines()方法是一次读取所有内容,并且返回列表。
如果是大文件,比较合适的是循环使用read(size)方法,配置文件适合使用readline()方法。
close()方法是关闭文件引用,释放系统资源。
例子2:
f = open(r'd:\test\hamlet1.txt')
print(f.read())
IO异常
正常的文件读取使用的过程是,打开文件,建立文件对象,读取内容或者写入内容,关闭文件对象释放资源。但是过程中可能出现异常情况,导致的一个典型错误是文件对象不能正常关闭,系统资源得不到释放。
因此要捕捉异常,处理类似释放资源的工作。
第一种方法:使用try filnally捕捉错误:
try:
f = open(r'd:\test\hamlet12.txt')
print(f.read())
finally:
if f:
f.close()
第二种方法:with语句
with open(r'd:\test\hamlet1.txt') as f:
print(f.read())
使用with语句不需要关闭语句。
with open(r'd:\test\hamlet1.txt') as f:
for line in f.readlines():
print(line)