首页 > 其他分享 >02 b模式

02 b模式

时间:2023-03-10 17:57:41浏览次数:40  
标签:02 utf res 模式 mode print line open

"""
@作者: egon老湿
@微信:18611453110
@专栏: https://zhuanlan.zhihu.com/c_1189883314197168128


控制文件读写内容的模式
t:
1、读写都是以字符串(unicode)为单位
2、只能针对文本文件
3、必须指定字符编码,即必须指定encoding参数
b:binary模式
1、读写都是以bytes为单位
2、可以针对所有文件
3、一定不能指定字符编码,即一定不能指定encoding参数

总结:
1、在操作纯文本文件方面t模式帮我们省去了编码与解码的环节,b模式则需要手动编码与解码,所以此时t模式更为方便
2、针对非文本文件(如图片、视频、音频等)只能使用b模式
"""

# 错误演示:t模式只能读文本文件
# with open(r'爱nmlgb的爱情.mp4',mode='rt') as f:
# f.read() # 硬盘的二进制读入内存-》t模式会将读入内存的内容进行decode解码操作


#
# with open(r'test.jpg',mode='rb',encoding='utf-8') as f:
# res=f.read() # 硬盘的二进制读入内存—>b模式下,不做任何转换,直接读入内存
# print(res) # bytes类型—》当成二进制
# print(type(res))

# with open(r'd.txt',mode='rb') as f:
# res=f.read() # utf-8的二进制
# print(res,type(res))
#
# print(res.decode('utf-8'))

# with open(r'd.txt',mode='rt',encoding='utf-8') as f:
# res=f.read() # utf-8的二进制->unicode
# print(res)


# with open(r'e.txt',mode='wb') as f:
# f.write('你好hello'.encode('gbk'))

# with open(r'f.txt',mode='wb') as f:
# f.write('你好hello'.encode('utf-8'))
# f.write('哈哈哈'.encode('gbk'))


# 文件拷贝工具
src_file=input('源文件路径>>: ').strip()
dst_file=input('源文件路径>>: ').strip()
with open(r'{}'.format(src_file),mode='rb') as f1,\
open(r'{}'.format(dst_file),mode='wb') as f2:
# res=f1.read() # 内存占用过大
# f2.write(res)

for line in f1:
f2.write(line)




# 循环读取文件
# 方式一:自己控制每次读取的数据的数据量
# with open(r'test.jpg',mode='rb') as f:
# while True:
# res=f.read(1024) # 1024
# if len(res) == 0:
# break
# print(len(res))


# 方式二:以行为单位读,当一行内容过长时会导致一次性读入内容的数据量过大
# with open(r'g.txt',mode='rt',encoding='utf-8') as f:
# for line in f:
# print(len(line),line)

# with open(r'g.txt',mode='rb') as f:
# for line in f:
# print(line)

# with open(r'test.jpg',mode='rb') as f:
# for line in f:
# print(line)







标签:02,utf,res,模式,mode,print,line,open
From: https://www.cnblogs.com/wiii/p/17204298.html

相关文章

  • 01 x模式
    """@作者:egon老湿@微信:18611453110@专栏:https://zhuanlan.zhihu.com/c_1189883314197168128x模式(控制文件操作的模式)-》了解x,只写模式【不可读;不存在则创建,存在......
  • java学习日记20230310-排序
    排序 指将一组数据按照指定的顺序排列的过程分类:内部排序:指将需要处理的所有数据都加载到内存储存器中,进行排序,包括交换排序法,选择排序法,插入排序法外部排序:......
  • [联合省选 2022 D2T1] 卡牌
    首先直接按题意模拟一下,发现“所有质数都要被选上”这个条件很烦,因为选上一个卡牌后有很多质数会受到影响,非常不好做。换言之,题中的限制很强。考虑正难则反,钦定一些质数使......
  • java学习日记20230310-数组
    数组数组/排序/查找数组可以存放多个统一类型的数据,数组本身也是一种数据类型,引用类型;    array.length标识数组的大小/长度数组的定义数据类型[]数组名......
  • 设计模式系列一策略模式
    一.策略模式(StrategyPattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一......
  • Mybatis-lesson5-属性及别名-2023-3-10
    属性文件:resources-> db.propertiesdriver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=U......
  • 「THUPC 2023 初赛」欺诈游戏 题解
    写点无脑做法。设走私者的策略是\(p_i\)概率选\(i\),检查官的策略是\(q_i\)概率选\(i\)。因为两者策略均最优,所以走私者选任意一个数得到的期望收益相同,检查官选任......
  • Ubuntu 20.04 双网卡绑定bond 主备模式
     一、active-backup-主备模式一个网卡处于活动状态,另一个处于备份状态,所有流量都在主链路上处理,当活动网卡down掉时,启用备份网卡。 1、实验环境VMware虚拟机,系统Ubu......
  • CF1802D题解
    CF1802D题解传送门更好的阅读体验简化题意:有n个商店,每个商店卖a,b两种商品,价格分别为\(a_i,b_i\),你需要在每个商店买一个商品,并且不能在所有商店都买同一种商品,最......
  • 设计模式-javascript实现【外观模式】
    定义:外观模式又叫门面模式,外观模式为一个系统中的子系统提供一个统一的高层接口,从而方便使用子系统。1.用类实现外观模式classCpu{install(){console.log('......