【1.37】文件的b模式

#coding=utf-8
f=open("D:\\oldboy\\123.txt","r",encoding="gbk")
print(f.encoding)
data = f.read()
print(data)
f.close()



这里可以看出  f.encoding 就看文件的属性 到底是什么类型

 

但是用 b 模式打开的文件就没有这个encoding的查看方法了

#coding=utf-8
f=open("D:\\oldboy\\123.txt","rb")
# 要注意并知道123文件本身的存储的 编码格式(我们这里是gbk),后面解码要用,
# b 模式打开 不用写编码方法
# print(f.encoding)  也没有 encoding 这个查看方法
data = f.read()
#这里读取出来的就是二进制
print(data)
#这里要用解码方法将二进制文件转码,才能打印输出,使用,不然会报错
print(data.decode("gbk"))
#这里就要编码和解码格式一致,不然报错或者会出现乱码
f.close()

 

#coding=utf-8
f=open("这是第一个操作文件_1","w",encoding="utf-8")
#python 2 这里不能写encoding这个参数
f.write("你好\n1111\n222\n333\n")
f.close()

#上面的方式 就必须手动关闭文件 f.close(),下面with 就不需要关闭,程序执行完就会自动关闭
with open("这是第一个操作文件_1","r+",encoding="utf-8") as f:
print(f.writable())
print(f.readable())

#当依靠 b模式打开文件 就不用写编码格式
with open("这是第一个操作文件_1","rb+") as f:
data=f.read()
print (data)
print (f.tell())
with open("这是第一个操作文件_1","rb+") as f:
data = f.__iter__()
print (data.__next__())
print (data.__next__())
#这里是一个生成器,将文件形成迭代器 就因为有这个方法,for就是执行这样方法后,方能进行for 循环
with open("这是第一个操作文件_1","rb+") as f:
data=f.read()
print("------------>",data)
print("------------>",data.decode("utf-8"))
print(data.decode("gbk"))

with open("这是第一个操作文件_1","ab+") as f:
f.write("中国\n".encode("utf-8"))
#这样的方式也可以
f.write(bytes("子湾\n",encoding="utf-8"))
#这就是字符编码 过程


默认打开模式 是 rt 模式
b 模式 就是打开所有文件 硬盘保存的就全部是 二进制

1、文件有文本 图片 视频 t模式不能处理 只能b

2、b模式 就是为了跨平台 用这样的方式 随便哪个平台都可以用

3、所有linux unix 系统 都是文件系统 就是二进制系统 针对win 的系统采用这样的方法
posted @ 2016-03-24 16:08  科学小怪癖  阅读(128)  评论(0)    收藏  举报