一、简介
-
举例,操作一个文本文件:
# 1、找到文件,双击打开 # 2、读或者修改 # 3、保存&关闭 # 用 python 来操作如下: f = open(filename) # 打开文件 f.write('dzm') # 写入 f.read() # 读取 f.close() # 保存并关闭
-
不过有一点跟人为操作不同,打开文件操作时,人为的是可读可写。
但是
python
有点傻,只能以读、创建、追加
3 种模式中任意一种打开文件,不能既写又读,也就是读的模式打开只能读,写的模式打开只能写。 -
文本模式打开文件
r
:只读模式w
:创建模式,若文件已存在,则覆盖旧文件a
:追加模式,新数据会写到文件末尾
# 文件模式 - 创建 f = open('test.txt', 'w') f.write('dzm') f.close()
-
2进制模式
打开文件rb
:只读模式wb
:创建模式,若文件已存在,则覆盖旧文件ab
:追加模式,新数据会写到文件末尾
通过
2进制模式
读出来的数据就是bytes
字节类型,到时候写进去的也得是bytes
字节类型:# 2进制模式 - 创建 f = open('test.txt', 'wb') f.write('xyq'.encode()) f.close()
二、基本操作(创建、读取、追加)
# 创建模式
f = open('test.txt', 'w')
# 写入
f.write('a\n')
f.write('b\n')
f.write('c\n')
# 保存并关闭
f.close()
# 现在的 f 是创建模式,读取会报错
# f.read()
# 只读模式(默认模式)
f = open('test.txt', 'r')
# 读取全部内容
# print(f.read()) # a b c
# 读取一行内容
# print(f.readline()) # a
# 读取所有行内容(数组)
print(f.readlines()) # ['a\n', 'b\n', 'c\n']
# 现在的 f 是只读模式,写入会报错
# f.write('d\n')
# 只读模式(默认模式)
f = open('test.txt', 'r')
# 读取一行内容
print(f.readline()) # a
# 读取剩下的全部内容
print(f.read()) # b c
# 之所以会输出为这样,可以理解为读取内容的时候有个光标,读了第一行之后,光标到第二行了,在继续读只会从第二行开始。
# 只读模式(默认模式)文件编码格式指定
f = open('test.txt', 'r', encoding='gbk')
# 读取全部内容
print(f.read()) # 中国
# 追加模式
f = open('test.txt', 'a')
# 追加
f.write('d\n')
# 保存并关闭
f.close()
# 在追加模式下,也只能追加,不能读,不然也会报错。
三、图片、视频文件读取
-
图片、视频文件只能通过
2进制模式
进行读取操作# 读取图片 f = open('temp.png', 'rb') for line in f: print(line)