文件读写


本章概述:python基础——文件读写


1、打开和关闭文件

在实际开发中经常会涉及到持久化的过程,即将程序运行中产生的某些数据保存到电脑上,这时就需要读写文件。在python中实现文件操作是比较简单的,我们可以使用内置的open函数打开文件,用close关闭文件。在使用open函数时,需要传入文件路径以及访问模式,还可以传入编码类型等信息。

1
2
3
f=open("test.txt",'w',encoding='utf-8')  #文件路径可以用绝对路径也可以用相对路径
f.write("111")
f.close()

w指的是以只写的方式打开文件,除此之外还有好几种访问模式,具体看下表:

访问模式 说明
r 以只读的方式打开已有文件,文件指针会显示在文件的最开头,这是默认方式,无法创建文件
w 以只写的方式打开文件,如果是打开已有文件,会对原有文件进行覆盖,没有文件则可以创建文件
a 打开文件进行追加,如果是打开已有文件,文件指针会显示在文件末尾,没有文件则可以创建文件并写入
b 以二进制的方式打开文件
+ 更新(即可以读又可以写)

b+需要跟其他其中模式相互配合使用,比如rbwb等。

使用open函数打开文件成功后会返回一个文件对象,通过这个对象,我们就可以实现对文件的读写操作;如果打开文件失败,open函数会引发异常,稍后会对此加以说明。如果要关闭打开的文件,可以使用文件对象的close方法,这样可以在结束文件操作时释放掉这个文件。

2、读写文件

针对文件进行操作时,如果是只读不写,可以直接用r模式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
f=open('test.txt','r')
print(f.read())
print(f.read(5)) #只读取5个字符
f.close()

# 可以用for循环读出每一行数据
file = open('test.txt', 'r', encoding='utf-8')
for line in file:
print(line, end='')
file.close()

# 也可以用readlines函数读出所有数据
file = open('test.txt', 'r', encoding='utf-8')
lines = file.readlines()
for line in lines:
print(line, end='')
file.close()

如果要向文件中写入内容,可以在打开文件时使用w或者a作为操作模式,前者会截断之前的文本内容写入新的内容,后者是在原来内容的尾部追加新的内容。

1
2
3
4
5
file = open('test.txt', 'a', encoding='utf-8')
file.write('hello\tworld')
file.write('\nhello\tworld')
file.write('\nhello\tworld')
file.close()
3、with函数

上面的写法每一次都要写close函数用于关闭文件,很不方便,因此我们可以用with语法来写open函数。

1
2
with open('test.txt', 'a', encoding='utf-8') as file:
file.write('hello\tworld')

这种语法叫做上下文语法。

针对文件的读写还有更加高级的用法,比如移动指针读写之类的,但是这种读写方式用的次数很少,这里也不多讲,毕竟我们是以基础为主。