打开文件 open(name, mode, encoding)
-
name:打开的文件名字 可以指定具体路径,如果填写文件名字的话就是当前py文件同级下的文本文件
-
mode:打开文件的模式(访问模式), 只读, 写入, 追加等。
r:以只读的方式打开文件
w:打开一个文件只用于写入,如果该文件已存在则打开文件,并从头开始编辑,原有内容将会删除, 如果该文件不存在,创建新文件
a:打开一个文件用于追加,如果文件已存在,新的额内容将会被写入到已有内容之后 如果该文件不存在,创建新文件写入
-
encoding: 编码格式,推荐使用UTF-8
# file是open函数返回的文件对象,它有自己的属性和方法
# file = open("text.txt", "r", encoding="UTF-8")
读取文件操作
文本内容:
- 读操作read(),文件对象.read(num), num参数表示读取多少字节,如果没有传入代表读取文件所有内容。
# f1 = file.read(10)
# print(f"读取十个字节的内容:{f1}")
# 练习文本
# 王拿铁
# 1
# f = file.read()
# print(f)
```
# 练习文本
# 王拿铁
# 18岁
# 敲代码
```
- 读取文件readLine(),文件对象.readLine(),每次读取一行内容,每调用一次继续向下读取一行。
# line1 = file.readline()
# line2 = file.readline()
# line3 = file.readline()
# print(line1) # 练习文本
# print(line2) # 王拿铁
# print(line3) # 18岁
- 读操作readLines,文件对象.readLines(),可以按照行的方式把整个文件的内容进行一次性读取,并且返回的是一个列表,每一行的数据为一个元素,回车符也会被打印到元素内。
f2 = file.readlines()
print(f2) # ['练习文本\n', '王拿铁\n', '18岁\n', '敲代码']
- 使用for循环输入文件内容。
# for line in file:
# print(line)
- 关闭文件夹 close(), 文件对象.close()。
- 为什么要关闭文件夹,如果不关闭文件夹,而且python程序一直在运行中,则会一直占用这个文件夹。
- with open(name, mode, encoding) as 变量名,使用这种方式对文件进行操作,可以在操作完成后自动关闭文件,避免遗漏。
注意:
- 使用文件读取操作任意方法时,如果一个文件已经被读取过,那么会继续读取上次读取结束之后的内容,不会从头读取,也就是从光标所在位置开始读取。
- 使用for循环循环文件内容,也会造成后续读写问题。
内容的写入
- 文件的写入,文件对象.write("内容")。内容刷新,文件对象.flush()。
- 直接调用write写入,内容并未真正的写入文件中,而是积攒在程序的内存里边,称为缓冲区。
- 当调用flush的时候才是真正写入文件当中。
- 这样可以避免频繁的操作硬盘,导致效率降低,建议一次性写入磁盘中。
- close是内置了flush方法的,如果没有调用flush,直接调用close也是会写入的。
需要先将mode改为w,如果文件存在则写入该文件,并删除文件原来的内容。如果文件不存在,则自动创建文件并写入内容。
# with open("info.txt", "w", encoding="UTF-8") as file:
# file.write("我叫王拿铁,我敲代码的时长两年半")
# file.flush()
文件的追加写入,将mode改为a,如果文件存在,则会在内容之后写入文件,如果文件不存在,则会创建这个文件写入内容。
with open("text.txt", "a", encoding="UTF-8") as file:
file.write("时长两年半")
file.flush()