在Python3中,以二进制模式打开文件会得到bytes的结果。迭代一个bytes对象可以得到0到255(包括0到255)的整数,而不是字符。从^{} documentation:While bytes literals and representations are based on ASCII text, bytes objects actually behave like immutable sequences of integers, with each value in the sequence restricted such that 0 <= x < 256

将string.printable转换为一个集合,并对其进行测试:printable = {ord(c) for c in string.printable}

以及

^{pr2}$

接下来,您希望附加到bytesarray()对象以保持合理的性能,并从ASCII解码以产生str结果:printable = {ord(c) for c in string.printable}

with open(filename, "rb") as f:

result = bytearray()

for c in f.read():

if c in printable:

result.append(c)

continue

if len(result) >= min:

yield result.decode('ASCII')

result.clear()

if len(result) >= min: # catch result at EOF

yield result

与逐个迭代字节不同,您可以对任何可打印的而不是进行拆分:import re

nonprintable = re.compile(b'[^%s]+' % re.escape(string.printable.encode('ascii')))

with open(filename, "rb") as f:

for result in nonprintable.split(f.read()):

if result:

yield result.decode('ASCII')

我会尝试将文件分块读取,而不是一次性读取;不要试图一次性将大文件放入内存中:with open(filename, "rb") as f:

buffer = b''

for chunk in iter(lambda: f.read(2048), b''):

splitresult = nonprintable.split(buffer + chunk)

buffer = splitresult.pop()

for string in splitresult:

if string:

yield string.decode('ascii')

if buffer:

yield buffer.decode('ascii')

缓冲区将任何不完整的单词从一个块带到下一个块;re.split()如果输入分别以不可打印字符开始或结束,则在开始和结束处生成空值。在

linux文件内容打印成二进制,如何在二进制文件中只打印可打印字符(相当于Linux下的字符串)?...相关推荐

  1. linux命令看文件内容,Linux文件内容查看相关命令

    1.more命令 在Linux中,more命令是一个基于vi编辑器的文本过滤器,它能以全屏的方式按页显示文本文件的内容,more里面内置了一些快捷键. (1)命令语法 more(选项)(参数) (2) ...

  2. linux怎么查看文件内容并显示行号,Linux文件内容查看相关命令

    原标题:Linux文件内容查看相关命令 Linux系统中使用以下命令来查看文件的内容: cat.tac.nl.more.less.head.tail 你可以使用 man [命令]来查看各个命令的使用文 ...

  3. 【.net core 通过NPOI库将Excel文件内容分类输出到不同的Excel中】

    前言 由于在文章[.net core 通过miniexcel库将Excel文件内容分类输出到不同的Excel中]中实现的Excel内容分类不能够保留原来的文件头格式,所以使用NPOI进行优化.NPOI ...

  4. linux bin文件制作,linux 将脚本制作成二进制bin文件

    本教程,实现将shell脚本和需要安装的软件包制作成二进制bin文件 1.编写shell脚本 这里有个安装jenkins的shell脚本,脚本内容如下: #!/bin/bash sed -n -e ' ...

  5. Linux文件内容查阅

    直接查阅一个文件的内容:cat/tac/nl命令 cat (concatenate) # cat [-AbEnTv] 选项与参数: -A  :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白 ...

  6. Linux文件内容查阅 - cat, tac, nl, more, less, head, tail, od

    cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写! nl 显示的时候,顺道输出行号! more 一页一页的显示文件内容 less 与 more 类似 ...

  7. linux文件内容乱码怎么解决,window到linux文件名乱码和文件内容乱码解决总结

    window系统一般文件名编码为gbk,文件内容编码这个需要通过编辑器查看或者设置,找个editplus文本编辑器就可以处理文本内容编码. 那么在window上显示正常的文件到linux上的时候,常常 ...

  8. linux文件内容的替换

    转载自:https://www.cnblogs.com/xingyunfashi/p/7631297.html 1. 基本替换 :s/str1/str2/ 替换当前行第一个str1为str2 :s/s ...

  9. Linux文件内容显示

    目录 1.文件内容浏览 2.cut命令使用 3.uniq命令使用 4.sort命令 5.替换大小写 1.文件内容浏览 a.cat查看/etc/passwd文件内容,且输出时带行号 cat -n 对输出 ...

最新文章

  1. php原生态三级联动_js,php,html实现地区三级联动
  2. org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)
  3. java 测量程序运行时间
  4. Java 9.while语句
  5. 一句话进行浏览器版本识别
  6. Oracle命令(二):Oracle数据库几种启动和关闭方式
  7. 专升本c语言名词解释题_福建普通高校专升本各类别考试题型及分值
  8. [转]如何在Windows 10中更改文件夹背景颜色
  9. iOS13深色模式/暗黑模式导航栏不自动适配的解决方案
  10. 联想小新潮5000 完美黑苹果 EFI文件
  11. 再谈iOS视频播放器旋转视图开发
  12. 项目管理十大过程思维导图
  13. 如何用Mockplus快速做一个手风琴菜单?
  14. RAKsmart:美国服务器租用对建站有哪些帮助?
  15. 群晖NAS虚拟机安装软路由LEDE,把K3C做AP
  16. 笔记本计算机的清洁保养知识,笔记本电脑保养小知识
  17. build-resource-filtering解释
  18. C语言实现简单的电梯控制系统
  19. abs() 数字取绝对值
  20. 电信大型服务器机房_四川绵阳科技城电信IDC机房服务器租用_绵阳服务器托管哪家好?...

热门文章

  1. 发送邮件 的类 C# .net
  2. keras模型中的默认初始化权重
  3. ZJUT 地下迷宫 (高斯求期望)
  4. 从物联网发展历程看区块链挑战
  5. php 扒取网页数据
  6. Android背景色渐变效果(shape,gradient) (转)
  7. 软件设计模式之适配器模式(JAVA)
  8. 初创公司怎么做销售数据分析_初创公司与Faang公司的数据科学
  9. python包numpy_NumPy Python科学计算软件包的终极指南
  10. 代码流星雨是什么形式_为什么要在2020年与流星合作