将字节写入文本文件

问题

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

解法

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

>>> 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. Java数组对象的内存布局
  2. 【dlib opencv - detector landmark】 ubuntu上针对dlib-hog和opencv haar人脸检测与landmar-68在不同平台上运行时间实验结果汇总
  3. 【转载】数据库操作:添加、插入、更新语句
  4. C++ 内存基本构件new/delete的意义、运用方式以及重载方式
  5. redis基本类型和使用
  6. 如果恶魔给你一亿,一年之后必须还两个亿,你会接受吗?
  7. jQuery封装tab选项卡组件(自定义自动功能和延迟显示功能)
  8. 一致 先验分布 后验分布_「分布式技术」分布式事务最终一致性解决方案,下篇...
  9. Linux 命令(63)—— nm 命令
  10. tcp压力测试工具_DNS压力测试工具之——DNSperf
  11. PythonServer
  12. ios加密算法AES
  13. MacBook上Wi-Fi抓包权限
  14. Phase2 Day16 数据库SQL
  15. 国产操作系统(1)UOS安装QT
  16. Python——组合数据类型(字符串、元组、列表、字典)转换总结
  17. QObject::moveToThread:
  18. 数据人的生活智慧(1)
  19. 网站分享:7个非常好用的电子书网站
  20. 使用element回到顶部组件报错“Error: target is not existed: .page-component__scroll .el-scrollbar__wrap“

热门文章

  1. VMWare网络设置的3中方式
  2. 图解WinCE6.0下的内核驱动和用户驱动
  3. 选了combobox里的选项后没激发change事件_备胎测试:来测测你被备胎了没?
  4. 【转】自旋锁-SpinLock(.NET 4.0+)
  5. 【转】Office365完整离线安装包下载及自定义安装教程
  6. ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程
  7. ABP入门系列(14)——应用BootstrapTable表格插件
  8. 【转】TFS测试管理
  9. python怎么改背景_python IDE背景怎么改
  10. iar stm32_树莓派玩转STM32开发(一)——介绍篇