文件操作案例
是用Python对文件进行基本的读写操作。
注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。
语法格式
简单的语法格式为:open(file, mode=‘r’)
完整的语法格式为:open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:
file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf8
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型
opener:
mode模式参数详细说明:
序号 | 模式 | 描 述 |
1 | t | 文本模式 (默认)。 |
2 | x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
3 | b | 二进制模式。 |
4 | + | 打开一个文件进行更新(可读可写)。 |
5 | U | 通用换行模式(不推荐)。 |
6 | r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
7 | rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
8 | r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
9 | rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
10 | w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
11 | wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
12 | w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
13 | wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
14 | a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
15 | ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
16 | a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
17 | ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
18 | 默认为文本模式,如果要以二进制模式打开,加上 b 。 |
文件内建函数和方法
序号 | 内建函数 | 函数描述 |
1 | open() | 打开文件 |
2 | read() | 输入 |
3 | readline() | 输入一行 |
4 | seek() | 文件内移动 |
5 | write() | 输出 |
6 | close() | 关闭文件 |
其他文件内建函数和方法:
file对象使用open函数来创建,下表列出了file对象常用的函数:
序号 | 方法 | 描述 |
1 | file.close() | 关闭文件。关闭后文件不能再进行读写操作。 |
2 | file.flush() | 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。 |
3 | file.fileno() | 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。 |
4 | file.isatty() | 如果文件连接到一个终端设备返回 True,否则返回 False。 |
5 | file.next() | 返回文件下一行。 |
6 | file.read([size]) | 从文件读取指定的字节数,如果未给定或为负则读取所有。 |
7 | file.readline([size]) | 读取整行,包括 “\n” 字符。 |
8 | file.readlines([sizeint]) | 读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。 |
9 | file.seek(offset[, whence]) | 设置文件当前位置。 |
10 | file.tell() | 返回文件当前位置。 |
11 | file.truncate([size]) | 截取文件,截取的字节通过size指定,默认为当前文件位置。 |
12 | file.write(str) | 将字符串写入文件,返回的是写入的字符长度。 |
13 | file.writelines(sequence) | 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符 |
打开和写入实例1:
# 我们要将小说的人物记录文件中
#打开文件name.txt,并开启写入模式,付给file变量
file =open('name.txt','w') #默认只读 #open(mode=r)
#写入函数方法
file.write('宋江')
#关闭文件并保存
file.close()
#运行后在相应的路径下,产生一个name.txt文件
以上实例输出结果为:
打开和读取实例2:
file1 = open('name.txt')
print(file1.read())
file.close
以上实例输出结果为:
打开和新增实例3:
#我们要将小说的人物记录文件中,但由于文件已有内容,需要在基础上新增内容
file2 = open('name.txt','a') #此处记住模式用:a
file2.write('吴用')
file2.close
#这就是实现了新增的功能
以上实例输出结果为:
文件的常用操作
打开和只读取文件一行实例4:
#我们要读取小说的人物记录的文件,只读取一行
file3 = open('name.txt')
print(file3.readline())
file3.close
#这就是实现了新增的功能
通过for循环使用,逐行打印实例5:
#我们要读取小说的人物记录的文件,通过for循环使用,逐行打印
file4 = open('name.txt')
for line in file4.readlines():
print(line)
print('-------')
file4.close
以上实例输出结果为:
通过tell和seek,来返回文件当前位置实例6:
#打开文件
file5 = open('name.txt')
#输出光标所在位置,最初位置为0
print(file5.tell())
#查看文件1
file5.read(1)
#输出光标所在位置,此时位置为1
print(file5.tell())
#偏移位置,移动,第一个参数代表的是偏移的位置,第二个参数 0表示从文件开头偏移 1表示从当前位置偏移 2从文件结尾
file5.seek(0,0)
#听过验证发现回到最初的位置0
print(file5.tell())
file5.close
以上实例输出结果为: