Python中文
首页
教程
问答
标签
搜索
登录
注册
高效读取、处理连续二进制文件
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有非常大的二进制文件,没有行和字段分隔符。目标是高效地将这些文件处理为制表符分隔的文件。在</p> <p>文件的结构如下:</p> <p>每个记录都是固定长度的,20字节。每个字段的长度不同,三个字段的长度分别为3、7和10字节。每个字段也表示不同的数据类型,字段1和2是int,3是char。在</p> <p>处理这些文件的最有效方法是什么?我希望尽可能简单,使用Bash工具dd/odsed/awk,尽可能避免使用perl/python,除非性能差异非常大。在</p> <p>下面是一个工作尝试,很慢。以上工具我是新手,请详细解释。在</p> <pre><code>binfile="binfile.BIN" for (( i = 0 ; i <= 20000000 ; i += 20 )) do field1=$( od "${binfile}" -An --skip-bytes"$((${i}))" --read-bytes=3 --format=dI ) field2=$( od "${binfile}" -An --skip-bytes"$((${i}+3))" --read-bytes=7 --format=dI ) field3=$( od "${binfile}" -An --skip-bytes"$((${i}+10))" --read-bytes=10 --format=c ) echo - ${field1}'\t'${field2}'\t'${field3} >> output.tab done </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<pre><code>fold -b -w 20 | cut output-delimiter $'\t' -b 1-3,4-10,11-20 </code></pre> <p>如果您的“cut”不支持输出分隔符,请尝试“gcut”(GNU cut)或考虑安装gnucoreutils。在</p> <p>请告诉我们不同的解决方案(请尽快尝试)</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
6 回答
无法使用Django\u mssql\u后端迁移到外部hos
9 回答
无法使用Django&Python3.4连接到MySql
9 回答
无法使用Django+nginx上载媒体文件
8 回答
无法使用Django1.6导入名称模式
2 回答
无法使用Django1.7和mongodb登录管理站点
7 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
5 回答
无法使用Djangockedi验证CBV中的字段
4 回答
无法使用Djangocketditor上载图像(错误400)
3 回答
无法使用Djangocron进行函数调用
7 回答
无法使用Djangofiler djang上载文件
7 回答
无法使用Djangokronos
8 回答
无法使用Djangomssql provid
2 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
10 回答
无法使用Djangomssq迁移Django数据库
9 回答
无法使用Djangonox创建用户
3 回答
无法使用Djangopyodb从Django查询SQL Server
2 回答
无法使用Djangopython3ldap连接到ldap
7 回答
无法使用Djangoredis连接到redis
1 回答
无法使用Django中的FK创建新表
6 回答