IO 编程
文件读写
打开文件
open(file, mode = r, buffering = None, encoding = None, errors = None, newline = None, closefd = True)
具体需要查看 API, 这里只介绍几个常用的方法
open 函数的文件名是必传参数, 返回一个文件对象
- # 打开一个文件
- f = open(read.txt, r)
open 函数的 mode 参数:
值 | 功能描述 |
---|---|
‘r‘ | 读模式 |
‘w‘ | 写模式 |
‘a‘ | 追加模式 |
‘b‘ | 二进制模式 |
‘+‘ | 读/写模式 |
b 参数一盘处理文本文件时是用不到 b 参数, 便但处理其它类型的文件 (二进制文件,) 比如 mp3 或者图像, 那么应该在模式参数中添加 b
buffering, 文件缓冲区:
缓冲区, 默认是无缓冲区,
如果参数是 0,IO 操作就是无缓冲, 直接将数据写在硬盘上,
如果参数是 1,IO 操作就是有缓冲, 数据先写到内存里, 只有使用, flush 函数, 或者 close 函数, 才会将数据更新到硬盘中,
如果参数大于天, 则表示缓冲区的大小 (单位是字节),-1(或者是任何负数) 代表使用默认缓冲区的大小,
文件读取,
文件读取主要分为按字节读取和按行进行读取, 常用的方法有 read(),readlines(),close()
如果成功打开文本文件, 接下来调用 read()方法则可以一次性将文件内容, 全部写入到内存中, 最后返回的是 str 类型的对象:
f.read()
调用 close()可以关闭对文件的引用, 文件使用完后必须关闭, 因为文件对象会占用系统资源, 影响系统 IO 操作
由于文件操作可能会出现 IO 异常, 一旦出现 IO 异常, 后面的 close()方法就不会调用所以为了保证程序的健壮性, 我们需要使用 try...finally 来实现
- try:
- f = open(read.txt, r)
- print(f.read())
- finally:
- if f:
- f.close()
python 提供了一种简单的写法, 使用 with 语句来替代 try...finally 代码块和 close()方法
- with open(read.txt, r) as fileReader:
- print(fileReader.read())
由于可能会出现文件过大, 将会出现内存不足, python 提供更加合理的做法, 调用 readline()来每次读一行内容
小文件可以直接采取 read()方法读取到内存中,
大文件更加安全的方式是连续使用 read(size)
对于配置文件等文本文件, 使用 readline()更加合理
- with open(read.txt, r) as fileReader:
- for line in fileReader.readlines():
- print(line.strip())
得到结果:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
文件写入
推荐写法:
- with open(read.txt, w) as fileWriter:
- for num in range(1, 100):
- fileWriter.write(str(num)+\n)
来源: http://www.bubuko.com/infodetail-2492232.html