IO:在计算机中指的是Input/Output,也就是输入输出
1.3.1. 文件读写
打开文件是最常见的IO操作,在Python中使用open函数打开文件:
open(name[.mode[.buffering]])
open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。
模式(mode),缓冲区(buffering),默认模式是读模式,默认缓冲区是无。
例:
f = open(r’c:\text\qiye.txt’) #打开一个已知的txt文件
2.文件模式
open函数中的mode参数:
值 | 功能描述 |
---|---|
‘r’ | 读模式 |
‘w’ | 写模式 |
‘a’ | 追加模式 |
‘b’ | 二进制模式(可添加到其他模式中使用) |
‘+’ | 读/写模式(可添加到其他模式中使用) |
‘rb’ | 参数rb可以用来读取一个二进制文件 |
一般处理文件时,是使用不到’b’参数的,但是处理一些其他类型的文件(二进制文件),比如MP3音乐或者图像,那么应该在模式参数中增加’b’,这在爬虫中处理媒体文件很常用。
3.文件缓冲区
buffering参数:
值 | 缓冲方式 | 内存读写 |
---|---|---|
0 | 无缓冲 | 直接读写到硬盘上 |
1 | I/O 操作有缓冲 | 数据先写到内存里,只有使用flush函数或者close函数才会将数据更新到硬盘。 |
大于1 | 数字表示缓冲区大小(单位是字节) | |
-1(或任何负数) | 表示使用默认缓冲区大小 |
4.文件读取
文件读取方式主要分为按字节读取 和 按行读取,经常使用的方法:read()、readline()、readlines()、close()。
函数 | 读取方式 |
---|---|
read() | 一次将文件内容读取到内存,如果文件过大,会出现内存不足问题。一般对于大文件,可以反复调用read(size)文件,一次最多读取size个字节。 |
readline() | 可以每次读取一行内容 |
readlines() | 一次读取所有内容并按行返回列表。 |
按需采取不同的读取方式,例如:
小文件可以直接采取read()方法读取到内存 1
大文件更加安全的方式是连续调用read(size)2
配置文件等文本文件,使用readline()更合理3
close()函数可以关闭对文件的引用。文件使用完毕后必须关闭,因为文件对象会占用操作系统资源,影响系统的IO操作。
例:
>>>f =open(r'c:\text\qiye.txt')
>>>f.read()
‘olalalaaa’
f.close()
#’olalalaaaa’为qiye.txt文件中的内容