gpt4 book ai didi

python - 使用python向后读取二进制文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:15 25 4
gpt4 key购买 nike

我尝试反向读取文件(从头到尾)。下面的示例执行此操作,但我想问问社区 - 是否有更优雅的解决方案来解决我的问题?

import os, binascii

CHUNK = 10 #read file by blocks (big size)
src_file_path = 'd:\\src\\python\\test\\main.zip'
src_file_size = os.path.getsize(src_file_path)
src_file = open(src_file_path, 'rb') #open in binary mode
while src_file_size > 0:
#read file from last byte to first :)
if src_file_size > CHUNK:
src_file.seek(src_file_size - CHUNK)
byte_list = src_file.read(CHUNK)
else:
src_file.seek(0)
byte_list = src_file.read(src_file_size)
s = binascii.hexlify(byte_list) #convert '\xFB' -> 'FB'
byte_list = [(chr(s[i]) + chr(s[i+1])) for i in range(0, len(s), 2)] #split, note below
print(byte_list[::-1]) #output reverse list
src_file_size = src_file_size - CHUNK
src_file.close() #close file

UPD 想听听专家的意见——Python新手需要注意什么?此代码是否存在潜在缺陷?

提前致谢。

我正在使用 Python 3.3.1注意:从 here 按字节拆分!

最佳答案

在此处详细说明 tim-hoffman 对 mmap 的出色回答。 (抱歉,我会发表评论而不是回答,但我还没有足够的 stackfoo 来发表评论)。

import mmap
# Reverses a binary byte-wise in an efficient manner
with open("out.bin","wb") as w:
with open("in.bin,"rb") as f:
# read-only access or you get an access-denied or need to use r+b permissions
mm = mmap.mmap(f.fileno(),0,access=mmap.ACCESS_READ)
w.write(mm[::-1])

关于python - 使用python向后读取二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16443185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com