1、打开和关闭文件
想要打开文件就必须调用python内置的open()
函数,创建一个file对象,其语法如下:
open(file, mode='r')
①file: 必需,文件路径(相对或者绝对路径)。
②mode: 可选,文件打开模式
注意:请确保文件存在,否则您将收到错误消息。
mode 参数有:
值 |
描述 |
‘r’ |
读取模式(默认值) |
‘w’ |
写入模式,当文件不存在时创建它,当文件存在时清除原有内容 |
‘x’ |
独占写入模式,当文件不存在时创建它,当文件存在时引发异常 |
‘a’ |
附加模式,在既有文件末尾继续写入 |
‘b’ |
二进制模式(与其它模式结合使用 |
‘t’ |
文本模式(默认值,与其它模式结合使用) |
‘+’ |
读写模式(与其它模式结合使用) |
要关闭文件可以使用函数close()
,在把数据写入文件后,如果没有正确关闭文件,则很可能不能成功地写入数据。为此,Python 提供了一种简便的方法帮助我们避免这个错误,with 语句。当使用 with 语句打开文件时,将自动关闭文件
1 2
| >>> with open('fileName') as f: pass
|
2、读取和写入
首先要明白,在文本模式和二进制模式下,分别将 str 和 bytes 作为数据类型
(一)按字节读写
如果有一个名为 f 的文件对象,那么我们可以用 f.write()
来写入数据
1 2 3 4 5 6 7
| >>> f = open('testFile.txt','w') >>> f.write('Hello, ')
>>> f.write('World')
>>> >>> f.close()
|
读取也同样简单,使用 f.read()
方法即可,在文本模式下需要说明读取多少个字符,在二进制模式下需要说明读取多少个字节
1 2 3 4 5
| >>> f = open('testFile.txt') >>> f.read(2)
>>> f.read()
|
(二)按行读写
对于按行读取文件,我们可以使用方法 readline()
,当不提供任何参数时读取一行并返回,当提供一个非负整数时读取指定字符数并返回;如果希望读取文件中所有行,并以列表的方式返回它们,可以使用方法 readlines()
对于写入文件,方法 writelines()
和方法 readlines()
相反,其接收一个字符串列表,并将这些字符串都写入文件中。注意,写入时并不会自动添加换行符,因此你必须自行添加。另外,不存在方法 writeline()
,因为可以使用方法 write
1 2 3 4 5 6 7 8
| >>> f = open('testFile.txt','w') >>> f.writelines(['I\n','Love\n','Python\n']) >>> f.close() >>> f = open('testFile.txt','r') >>> f.readline()
>>> f.readlines()
|
(三)迭代文件对象
① 每次一个字符或字节
1 2 3 4 5
| with open(fileName) as f: while True: char = f.read(1) if not char: break process(char)
|
② 每次一行
1 2 3 4 5
| with open(fileName) as f: while True: line = f.readline() if not line: break process(line)
|
③ 文件迭代器
1 2 3
| with open(fileName) as f: for line in f: process(line)
|
3、随机存储
方法 seek(offest[, whence])
将当前位置移到 offest 和 whence 指定的位置。参数 offest 指定偏移字符或字节数,而参数 whence 指定偏移的初始位置,默认为 io.SEEK_SET(0),意为着文件开头,还可以是io.SEEK_CUR(1),意味着当前位置,还可以是 io.SEEK_END(2),意味着文件末尾。方法 tell()
返回文件当前位置
1 2 3 4 5 6 7 8 9 10 11 12
| >>> f = open('testFile.txt','w') >>> f.write('01234567890123456789')
>>> f.seek(5)
>>> f.write('Hello World')
>>> f.close() >>> f = open('testFile.txt','r') >>> f.read()
>>> f.close()
|