小编ber*_*tel的帖子

使用 Python 从二进制文件复制会插入新字节 (?)

我正在尝试打开由测量设备创建的文件,找到与元数据对应的字节,然后将其他所有内容写入新的二进制文件。(元数据部分不是问题:我知道标题并且可以轻松找到它们。我们不用担心。)

问题是:当我打开文件并将字节写入新文件时,会添加新字节,这会弄乱相关数据。具体来说,每次原始文件中有一个'0A'字节,新文件在它之前就有一个'0D'字节。我经历了几次修改代码以找到问题的迭代。这是最新和最简单的版本,以三种不同的方式产生相同的结果:

import os
import mmap

file_name = raw_input('Name of the file to be edited: ')
f = open(file_name, 'rb') 

#1st try: using mmap, to make the metadata sarch easier
s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
full_data = s.read(len(s))
with open(os.path.join('.', 'edited', ('[mmap data]' + file_name + '.bin')), 'a') as data_mmap:
    data_mmap.write(full_data)

#2nd try: using bytes, in case mmap was giving me trouble

f_byte = bytes(f.read())
with open(os.path.join('.', 'edited', ('[bytes data]' + file_name + '.bin')), 'a') as data_bytes:
    data_bytes.write(f_byte)

s.close()
f.close() …
Run Code Online (Sandbox Code Playgroud)

python binaryfiles

2
推荐指数
1
解决办法
1194
查看次数

标签 统计

binaryfiles ×1

python ×1