linux文件内容打印成二进制,如何在二进制文件中只打印可打印字符(相当于Linux下的字符串)?...
在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下的字符串)?...相关推荐
- linux命令看文件内容,Linux文件内容查看相关命令
1.more命令 在Linux中,more命令是一个基于vi编辑器的文本过滤器,它能以全屏的方式按页显示文本文件的内容,more里面内置了一些快捷键. (1)命令语法 more(选项)(参数) (2) ...
- linux怎么查看文件内容并显示行号,Linux文件内容查看相关命令
原标题:Linux文件内容查看相关命令 Linux系统中使用以下命令来查看文件的内容: cat.tac.nl.more.less.head.tail 你可以使用 man [命令]来查看各个命令的使用文 ...
- 【.net core 通过NPOI库将Excel文件内容分类输出到不同的Excel中】
前言 由于在文章[.net core 通过miniexcel库将Excel文件内容分类输出到不同的Excel中]中实现的Excel内容分类不能够保留原来的文件头格式,所以使用NPOI进行优化.NPOI ...
- linux bin文件制作,linux 将脚本制作成二进制bin文件
本教程,实现将shell脚本和需要安装的软件包制作成二进制bin文件 1.编写shell脚本 这里有个安装jenkins的shell脚本,脚本内容如下: #!/bin/bash sed -n -e ' ...
- Linux文件内容查阅
直接查阅一个文件的内容:cat/tac/nl命令 cat (concatenate) # cat [-AbEnTv] 选项与参数: -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白 ...
- Linux文件内容查阅 - cat, tac, nl, more, less, head, tail, od
cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写! nl 显示的时候,顺道输出行号! more 一页一页的显示文件内容 less 与 more 类似 ...
- linux文件内容乱码怎么解决,window到linux文件名乱码和文件内容乱码解决总结
window系统一般文件名编码为gbk,文件内容编码这个需要通过编辑器查看或者设置,找个editplus文本编辑器就可以处理文本内容编码. 那么在window上显示正常的文件到linux上的时候,常常 ...
- linux文件内容的替换
转载自:https://www.cnblogs.com/xingyunfashi/p/7631297.html 1. 基本替换 :s/str1/str2/ 替换当前行第一个str1为str2 :s/s ...
- Linux文件内容显示
目录 1.文件内容浏览 2.cut命令使用 3.uniq命令使用 4.sort命令 5.替换大小写 1.文件内容浏览 a.cat查看/etc/passwd文件内容,且输出时带行号 cat -n 对输出 ...
最新文章
- php原生态三级联动_js,php,html实现地区三级联动
- org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)
- java 测量程序运行时间
- Java 9.while语句
- 一句话进行浏览器版本识别
- Oracle命令(二):Oracle数据库几种启动和关闭方式
- 专升本c语言名词解释题_福建普通高校专升本各类别考试题型及分值
- [转]如何在Windows 10中更改文件夹背景颜色
- iOS13深色模式/暗黑模式导航栏不自动适配的解决方案
- 联想小新潮5000 完美黑苹果 EFI文件
- 再谈iOS视频播放器旋转视图开发
- 项目管理十大过程思维导图
- 如何用Mockplus快速做一个手风琴菜单?
- RAKsmart:美国服务器租用对建站有哪些帮助?
- 群晖NAS虚拟机安装软路由LEDE,把K3C做AP
- 笔记本计算机的清洁保养知识,笔记本电脑保养小知识
- build-resource-filtering解释
- C语言实现简单的电梯控制系统
- abs() 数字取绝对值
- 电信大型服务器机房_四川绵阳科技城电信IDC机房服务器租用_绵阳服务器托管哪家好?...