import chardet #chardet模块预测打开文本字符的编码# f = open(file='C:/Users/jeep-peng zhang/Desktop/23.txt', mode='r',encoding='utf-8') 文本模式读取f=open('C:/Users/jeep-peng zhang/Desktop/23.txt','rb',)#二进制模式读取stat = f.read()# f.close()print(stat.decode("gb2312"))#decode['其他'-----转成unicode] ,encode[unicode----转成gb2312]print(chardet.detect(stat))
一、文件的读入知识点:
1.文件的读模式 open(file="打开文件路径",mode='打开模式',encoding='编码')
2.‘r’模式为文本读取模式,‘rb’模式为二进制读取模式,主要用于网络传输
3.chardet模块 可以预测打开文本的编码类型(在‘rb’二进制模式下使用)
4.循环
f = open('C:/Users/jeep-peng hang/Desktop/23.txt','r',encoding='gbk')stat = f.read()f.close()for line in stat: print(stat)#出现的情况是一个一个字符的打印。 #==========================================================
f = open('C:/Users/jeep-peng zhang/Desktop/23.txt','r',encoding='gbk')
for line in f: print(line)#出现的情况是行的打印。中间会隔一行。二、文件的写入知识点:
1.‘w’模式是创建模式,如果在原来的文件上创建会删除原来的内容(注意!)
# 文件的写入# f=open('C:/Users/jeep-peng zhang/Desktop/33.txt','w',encoding='utf-8')f=open('C:/Users/jeep-peng zhang/Desktop/34.txt','wb')f.write('大家好我是我写的!'.encode('gbk')) #以二进制的模式写入需要编码f.close()
2.‘a’或‘ab’追加模式 需要使用\n 让文件重启一行重写
f=open('C:/Users/jeep-peng zhang/Desktop/23.txt','ab')f.write('\n大家好我是我写的的的!'.encode('gbk')) #以二进制的模式写入需要编码f.close()
三、混合模式:‘r+’
f=open('C:/Users/jeep-peng zhang/Desktop/23.txt','r+',encoding='gbk')#混合模式stn = f.read()print('con',stn)f.write('\n卧室的') #以二进制的模式写入需要编码f.close()
3.1.f.read()中读了一次后,光标会移动到最后,再次读的话无法再次读取打印出内容。
3.2 f.flush()将内存里的存储的内容强制刷新到硬盘里面
3.3f.readline() 单行读取内容,一行一行的读取内容,f.tell()方法显示当前的光标位置,f.seek(0)返回到最开始的光标位置。f.seek()和f.tell()都是以字节数来读取,f.read()是按照字符数来读取。
f.tell() #按照字符数读取170f.seek(0)#按照字符数读取0f.readline()'年罚没30亿!银行业案件高发态势得到遏制\n'
f.seek(0)
0f.seek(6)6f.read(6)'30亿!银行'3.4 f.truncate()从当前位置截断(在'r+')模式下使用,例子:
'年罚没30亿!银行业案件高发态势得到遏制\n'
f.truncate(4)从最开始往后4个字符开始截断:(以字节数来读取)
f.seek(0)0f.seek(6)6f.truncate()6f.seek(0)0f.read()'年罚没'f.seek(2)2f.truncate(4)4最后显示:年罚