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() #按照字符数读取
170
f.seek(0)#按照字符数读取
0
f.readline()
'年罚没30亿!银行业案件高发态势得到遏制\n'
f.seek(0)
0
f.seek(6)
6
f.read(6)
'30亿!银行'
3.4 f.truncate()从当前位置截断(在'r+')模式下使用,例子:
'年罚没30亿!银行业案件高发态势得到遏制\n'
f.truncate(4)从最开始往后4个字符开始截断:(以字节数来读取)
f.seek(0)
0
f.seek(6)
6
f.truncate()
6
f.seek(0)
0
f.read()
'年罚没'
f.seek(2)
2
f.truncate(4)
4
最后显示:年罚