使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。
语法:open(name,mode,encoding)
其中,name:是要打开的目标文件名的字符串;
mode:设置打开文件的模式:只读、写入、追加等;
encoding:编码格式
mode模式 | 描述 |
r | 以只读的方式打开文件,文件的指针将会放在文件的开头,这是默认模式。 |
w | 打开一个文件只用于写入,如果该文件已存在则打开文件,并从头开始编辑,原有内容会被删除。如果文件不存在,则创建新文件。 |
a | 打开一个文件追加内容,如果不存在,则创建并写入。 |
f = open("D:/1.txt","r",encoding="UTF-8")
语法:文件对象.read(num)
其中,num表示从文件中读取的数据的长度(单位字节),没有传入则表示读取所有数据。
例:
- f = open("D:/save_date.txt","r",encoding="UTF-8")
- print(f.read(10))
- print(f.read())
- f.close # 关闭文件
可以按照行的方式把文件中的内容进行一行读取,并且返回一个字符串。
可以按照行的方式把整个文件中的内容进行一次性读取,并且返回一个列表,其中每一行的数据是一个元素。
例:
- f = open("D:/save_date.txt","r",encoding="UTF-8")
- print(f.readline())# 一次读取一行内容
- print(f.readlines())
- f.close # 关闭文件
自动关闭文件。
语法:with open(name,mode,encoding)as f:
例:
- with open("D:/save_date.txt","r",encoding="UTF-8") as f:
- for line in f:
- print(line)
语法:文件对象.write()
直接调用write,内容并未真正写入文件,而是会积攒在内存中,称为缓冲区;
当调用flush方法的时候,内容会真正写入文件。
例:
- f = open("D:/save_date.txt","w",encoding="UTF-8")
- f.write("111")
- f.flush()
- f.close()
语法:文件对象.seek(offset,whence)
参数offset表示文件指针移动的偏移量,可选参数whence表示从哪个位置移动文件指针:
whence的默认值是0,即文件指针默认从文件起始位置移动。因此seek(0)表示将文件指针移动到文件起始位置,seek(0,2)表示文件指针移动到文件结尾处。注意当以文本文件模式“t”打开文件时,只能从文件开头移动指针,即whence必须为0
提示:汉字偏移量为2
例:
- #手动创建2.txt,加编码格式正常读出
- file = "2.txt"
- f = open(file,'r',encoding="UTF-8")
- line = f.read()
- print(line)
- f.close()
- //写入文件没有说明编码格式,而读取文件说明了,则报错
- file = "3.txt"
- f = open(file,'w')
- f.write("我爱1")
- f.close()
- f = open(file,'r',encoding="UTF-8")
- line = f.read()
- print(line)
- f.close()
报错内容:'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte