操作模式记录表
下面这个表记录了文件所有的读取和写入操作模式,对大家很有帮助呦!
读取操作r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式 | |
---|---|---|
rb | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件图片等。注意:二进制文件把内容表示为一个特殊的bytes字符串类型。 | |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头 | |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头一般用于非文本文件如图片等 | |
写操纵w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从头开始编辑,既原有内容会被删除。如果该文件不存在,创建新文件。 | |
wb | 以二进制格式打开一个文件只用于手写。如果该文件已经存在则打开文件,并从头开始编辑,既原有的内容会被删除。如果该文件不存在创建新文件。一般用于非文件等 | |
w+ | 打开一个文件用于读和写。如果该文件已经存在,则打开文件,并从开头开始编辑,既原有内容会被删除。如果文件不存在,创建新文件 | |
wb+ | 以二进制格式打开一个文件用于读写,如果该文件已存在则打开文件,并从开头开始编辑,既原有内容会被删除。如果该文件不存在创建新文件,一般用于非文本文件进行写入 | |
追加a | 打开一个文件用于追加。如果文件已存在,文件指针将会放在的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在创建新文件进行写入 | |
ab | 以二进制格式打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾也就是说,新的内容警徽被写入到已有内容值后如果该文件不存在,创建新文件进行写入 | |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾,文件打开时会是追加模式。如果该文件已存在,创建新文件用于读写 | |
ab+ | 以二进制格式打开一个文件用于追加如果该文件已存在文件指针将会放在文件的结尾,如果该文件不存在,创建新文件用于读写 |
注意:后面跟b的都是以二进制打开文件进行读、写或者追加
带加号(+)的可用于读和写两种操作方式
单个字符比如:(r)(a)(w)只代表一种方式,读,追加,写文件权限大致分为这三个模块:读(r)、写(w)、追加(a)
三种方式都可以进行二进制操作,
文件操作
1、读操作
read()
调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,会导致程序卡死,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字符的内容
读取文件时和我们正常读书一样,先打开书,然后读书本中的内容,读取完成之后在进行关闭
a=open('a/b.txt')
ret = a.read()
print(ret)
a.close()
#
readline
每次读取一行,并且自带换行功能,每一行末尾会读到\n
file = open('d.txt')
ret = file.readline()
print(ret)
ret = file.readline()
print(ret)
ret = file.readline()
print(ret)
file.close()
# readl
readlines
一次性以行的形式读取文件的所有内容并返回一个list(列表),需要去遍历读出来
file = open('d.txt')
ret = file.readlines()
print(ret)
for i in ret:
print(i)
file.close()
# 循环
读取
句柄会返回一个list是一个可迭代对象,因此,可以循环读取文件的内容,每次读一行
循环读,每次读一行
既使用for循环进行遍历把文件读出来
file = open('d.txt')
for line in file:
print(line)
#
读不在当前目录的文件时相对路径用…/
file = open('../daobao1/mondel.py',encoding='utf-8')
ret = file.read()
print(ret)
#
write写操作
写操作使用wtite来写入
file = open('l.txt',mode='w')
ret = file.write('fgdsugfywruegfurgu\nfhughfiogyuahgu\ngdsyugfurysgdufeg\nfhsyuguieygfuiwr')
print(ret)
file.close()
#
2、writelines()
把seq的内容全部写到文件中(多行一次性写入)
file.writelines(seq)
file = open('i.txt',mode='w+')
lst = ['aadsad\n','bb,','dsad']
file.writelines(lst)
file.close()
#
其他操作
(1).tell()
#tell获取文件当中当前光标所在的位置
file = open('i.txt',mode='r')
pos=file.read(3)
ret= file.tell()
print(pos)
print(ret)
file.close()
(2)seek()
seek():移动文件读取指针(光标)到指定的位置
seek()的三种模式
(1)f.seek(x,0)
#第二个参数0表示绝对位置(文件的开头位置),第一个参数x表示文件开头的第几个字节位置
file = open('l.txt',mode='rb')
ret = file.seek(3,1)
print(file.tell())
print(ret)
#
print(file.read(1))
print(file.read(1))
file.close()
(2)、第二个参数1表示相对位置(光标当前位置),第一次参数x表示移动几个字节开始读取
#注意:如果是操作文本x只能是0,如果是以二进制模式操作x可以是其他内容。
file = open('l.txt',mode='rb')
ret= file.read(1)
print(ret)
print(file.tell())
file.seek(-1,1)
(3)f.seek(x,2)2表示光标在文件的末尾,x表示从文件末尾开始移动几个位置后开始读取
注意:如果文本只能是0,如果是二进制模式,x可以是其他内容
file = open('l.txt',mode='rb')
ret = file.read(1)
print(ret)
print(file.tell())
print(file.seek(6, 0))
print(file.seek(-1, 1))
#从文件末尾位置向前移动3个字节后进行读取内容
file = open('file/a.txt',mode='rb')
file.seek(-3,2)
print(file.tell())
ret = file.read(4)
print(ret)
file.close()
# # (4).nam
namee和mode
file.name返回路径
file.mode返回文件读写模式
file = open('i.txt','r')
print(file.name)
print(file.mode)
file.close()
with操作方式
使用with方式操作文件,可以不用关闭文件,会自动关闭
with open('i.txt')as file:
ret = file.read()
print(ret)
#
乱码
python读写文件时,默认使用的编码为平台编码,也就是gbk.
在pycharm创建的文件默认使用的是utf-8编码往
pycharm中的k.txt保存内容
乱码
with open('i.txt',mode='w') as f:
f.write('zsj')
向磁盘中的文件保存内容,不乱码。
with open('C:/exeread/e.txt',mode='w') as f:
f.write('zsj')
指定编码,在操作模式的后面可以指定固定的编码格式
with open('i.txt',mode='w',encoding='utf-8') as f:
f.write('啦啦啦啦')