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>open my $fh, '<:raw', shift; local $" = "\t"; while ( read $fh, my $rec, 20 ) { my @f = unpack 'a3 a7 a10', $rec; print "@f\n"; } </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
5 回答
无法使用Django\u mssql\u后端迁移到外部hos
4 回答
无法使用Django&Python3.4连接到MySql
7 回答
无法使用Django+nginx上载媒体文件
1 回答
无法使用Django1.6导入名称模式
1 回答
无法使用Django1.7和mongodb登录管理站点
4 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
2 回答
无法使用Djangockedi验证CBV中的字段
8 回答
无法使用Djangocketditor上载图像(错误400)
5 回答
无法使用Djangocron进行函数调用
7 回答
无法使用Djangofiler djang上载文件
2 回答
无法使用Djangokronos
6 回答
无法使用Djangomssql provid
9 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
10 回答
无法使用Djangomssq迁移Django数据库
7 回答
无法使用Djangonox创建用户
2 回答
无法使用Djangopyodb从Django查询SQL Server
6 回答
无法使用Djangopython3ldap连接到ldap
2 回答
无法使用Djangoredis连接到redis
9 回答
无法使用Django中的FK创建新表
4 回答