将字节写入文本文件

问题

你想在文本模式打开的文件中写入原始的字节数据。

解法

将字节数据直接写入文件的缓冲区即可,例如:

>>> import sys
>>> sys.stdout.write(b'Hello\n')
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: must be str, not bytes
>>> sys.stdout.buffer.write(b'Hello\n')
Hello
5
>>>

类似的,能够通过读取文本文件的 buffer 属性来读取二进制数据。

讨论

I/O 系统以层级结构的形式构建而成。文本文件是通过在一个拥有缓冲的二进制模式文件上增加一个 Unicode 编码/解码层来创建。 buffer 属性指向对应的底层文件。如果你直接访问它的话就会绕过文本编码/解码层。

本小节例子展示的 sys.stdout 可能看起来有点特殊。默认情况下, sys.stdout 总是以文本模式打开的。但是如果你在写一个需要打印二进制数据到标准输出的脚本的话,你可以使用上面演示的技术来绕过文本编码层。

《Python Cookbook 3rd》笔记(5.17):将字节写入文本文件相关推荐

  1. 《Python Cookbook 3rd》笔记汇总

    文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...

  2. 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素

    <Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...

  3. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  4. Machine Learning with Python Cookbook 学习笔记 第6章

    Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...

  5. Python Cookbook 3rd Edition Documentation

    Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...

  6. Machine Learning with Python Cookbook 学习笔记 第8章

    Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...

  7. Machine Learning with Python Cookbook 学习笔记 第9章

    Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...

  8. 《Python cookbook》笔记一

    <Python cookbook> 第一章 数据结构和算法 - *号解压多个变量 - 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可 ...

  9. python写文件byte_python 将字节写入文本文件

    想在文本模式打开的文件中写入原始的字节数据 将字节数据直接写入文件的缓冲区即可 >>> import sys >>> sys.stdout.write(b'Hell ...

最新文章

  1. 抓取apache2的进程pid
  2. Spring的国际化(转载)
  3. tshark 和 tcpdump 的区别
  4. 信息系统开发平台OpenExpressApp -如何部署OEA应用
  5. ubuntu下oracle数据的导入,Ubuntu下Oracle10g的导入与导出
  6. 云智慧悄然“变身”业务运维,到底发生了什么?
  7. mysql 数据库后缀名,mysql 数据库文件扩展名
  8. SmartUpload问题
  9. 腾讯文件和微云服务器,网盘Web客户端对比:腾讯微云支持32GB单文件上传
  10. leetcode:买卖股票最佳时机含手续费
  11. 查看服务器支持的内存条,PowerEdge 服务器支持的内存配置指南
  12. RFID之M1卡数据分析
  13. dhcp服务器可以连接无线网吗,无线网dhcp服务器设置
  14. Oracle数据库逻辑备份与恢复(3)——数据泵(expdp、impdp)
  15. 操作系统——虚拟内存技术
  16. 第二阶段--团队冲刺--第八天
  17. SpringBoot单元测试NullPointerException
  18. 如何申请电子邮箱?电子邮箱怎么写?邮件可以撤回吗?
  19. 欧盟砍伐森林法规和遵守情况 用Dimitra技术解决森林砍伐问题
  20. FusionInsight,一个融合的大数据平台

热门文章

  1. CAN总线技术在船舶监控系统的应用
  2. java ranger rest_使用REST
  3. sql 删除数据_从零开始学SQL:是什么、如何安装、基本语法、表格(创建、删除、更新)、数据(插入、删除、更新)...
  4. uniapp开发实例github_跨端开发痛点?送你一款Vue最流行的跨端框架——uni-app
  5. Java学习笔记—TCP通信
  6. profile 安卓work_androidWorkProfileGeneralDeviceConfiguration 资源类型
  7. 【转】make makefile cmake qmake都是什么,有什么区别?
  8. 【转】.net框架读书笔记---CLR内存管理\垃圾收集(七)
  9. 【转】Dynamics 365中配置和使用文件夹级别的跟踪(folder-level tracking)
  10. 【转】Microsoft Cloud全新认证体系介绍