python处理二进制文件_python如何对文件进行二进制写操作

python访问txt文件非常简便,可是对于二进制文件的访问却让没有接触过的小伙伴有点恼火了,尤其是对于习惯了C语言的人而言。笔者经历一番波折总算实现了python对二进制文件的写操作,在这里记录一下。

工具/原料

PC一台

python开发环境

基本概念

1

python对二进制文件的操作需要使用bytes类,直接写入整数是不行的,如果试图使用fobj.write(123)向文件中以二进制写入123,结果提示参数不是bytes类型。

023cff37c97622bc2690ded3a05fd546049628e9.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

2

整数类型貌似不能直接转换为bytes类型,但是列表却可以,比如:bytes([1])可以获得一个b'\x01'。

04d7a614f4d0b503ab87574acc4ec28332bf20e9.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

3

由此我们可以通过这种“曲线救国”的方式将整数转换为bytes了,即:bytes([整数])

460fdc8333bf3bef5c1a410c3f3ea8db564a1ae9.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

4

调用fobj.write(bytes([1]))写入ok!

a99a494afa32939c5ca2ce065719ce2c5a1b15e9.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

END

代码编写

1

根据上述思路编写如下测试代码

cf6d451b1edef4dcd76c02ab45ecd3d968750ce9.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

2

执行测试代码

cfadcdd96975f2c491cc48f78f0148fe1f4206e9.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

3

在WinHex中查看杠杆写入的测试文件test.bin,写入的是0~255的二进制数,读出来也是,写入正确!

49bf00425d6b04d1cd7c8b3cb213e8e5edee01e9.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

END

注意事项

1、住要不要试图使用将整数转换成字符串,再使用“字符串.encode()”转换成bytes,这再python3中得到的其实是字符串的二进制序列!

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。

举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

展开阅读全部

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值