r
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w
打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文
件。
a
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,
新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb
以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存
在,创建新文件。
ab
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结
尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进
行写入。
r+
打开一个文件用于读写。文件指针将会放在文件的开头。
w+
打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文
件。
a+
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时
会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+
以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存
在,创建新文件。
ab+
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结
尾。如果该文件不存在,创建新文件用于读写。
1.seek(offset[, whence])
offset -- 开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。
给offset参数一个定义,表示要从哪个位置开始偏移;
0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
f.tell() 字节指针定位
写入
f = open("test.txt","w",encoding="UTF-8")
#写法一:
f.write("IT私塾\n高效学习\n学以致用\n") #通过换行符实现输出多行效果
#写法二:
content = ["IT私塾\n","高效学习\n","学以致用\n"]
f.writelines(content) #通过writelines一次性写出列表的每个元素
#写法三:
content = ["IT私塾","高效学习","学以致用"]
f.write("\n".join(content)) #使用字符串的join函数,为每个元素添加换行
符
f.close()
f = open("test2.txt","w",encoding="UTF-8")
f.write("IT私塾,高效学习")
f.close()
3.读取
#-----------------------------------------------------------
f = open("test2.txt","r",encoding="UTF-8")
#data = f.read() #没有指定读取的字符数,表示读取文件中所有的数据
#print(data)
data = f.read(2)
print("读取到的文件内容:",data)
data = f.read(4) #文件读取过程中的指针的定位会向后移动指定"字符数"
print("读取到的文件内容:",data)
f.close()
f = open("test2.txt","r",encoding="utf-8")
content = f.readlines()
print(content,type(content)) #输出的类型为列表类型(list)
#遍历列表中的内容,并在前面添加行号
#写法一:
# i = 1
# for data in content:
# print(f"{i}:{data}",end="")
# i+=1
#写法二:
for i,data in enumerate(content):
print(f"{i}:{data}", end="")
f.close()
6.3.1 flush() 刷新缓冲区
文件写入过程:
数据 --> 缓冲区(内存中) --> 文件中(硬盘上)
【flush函数】 刷新(清空)缓冲区
6.3.2 truncate() 截断文件
trancate函数,从指针位置到结束的字符全部删除掉,只保留指针之前的内容。
with open("luoluo.jpg","rb") as fin:
with open("luoluo_copy3.jpg","wb") as fout:
for data in fin:
fout.write(data)
#简单写法: open 之间可以用逗号,隔开
with open("luoluo.jpg","rb") as fin,open("luoluo_copy4.jpg","wb") as fout:
for data in fin:
fout.write(data)