Python - 如何编辑字节的十六进制文件字节
我希望能够打开一个图像文件和额外的十六进制值逐字节。我不知道如何做到这一点,令人惊讶的是,“python字节编辑”和“python字节数组”没有提出任何问题。有人可以指向我需要使用的图书馆,具体方法我可以谷歌,或教程/指南?Python - 如何编辑字节的十六进制文件字节
Python标准库有mmap模块,它可以用来做到这一点。查看the documentation了解更多信息。
+1。通常情况下,我会将文件加载到内存中来编辑,因为如果文件可能很长,mmap会更好。当然,如果这个文件非常*很长,并且不适合你的地址空间,它会重新打开(path,'r + b')和seek()... – bobince 2009-08-24 13:59:22
@bobince:在你的地点意见将文件“太长”去与某事的答案和迈向mmap? – sepiroth 2009-08-24 14:32:30
@hatorade:标准打开/读取/关闭可以处理与可用内存一样大的文件,但使用mmap()可以提高性能,因为只有您修改的页面才会从磁盘读取。我估计当文件达到兆字节左右时,显着的性能差异将会很明显。 – 2009-08-24 17:15:54
的Hachoir框架是一组Python库和工具来分析和编辑二进制文件:
http://pypi.python.org/pypi/hachoir-core
它具有常见的文件类型的知识,所以这可能只是你需要什么。
取决于你想这样做可能足以open the file in binary mode并与正常file函数读取数据的内容:
# load it
f = open("somefile", 'rb')
data = f.read()
f.close()
# do something with data
data.reverse()
# save it
f = open("somefile.new", 'wb')
f.write(data)
f.close()
Python并不真正关心如果data
字符串包含“二元”或“文本“数据。如果你只是想对一个合理大小的文件进行简单的修改,这可能就足够了。
是的,我只是想打开一个自定义图像文件并将其转换为.tiff。这可能是个诀窍,因为我基本上是“撤消”用于在自定义图像文件中分配像素数据的算法,并按照.tif规范重新组织它 – sepiroth 2009-08-24 14:09:01
查看stuct模块。
该模块执行Python值和表示为Python字符串的C结构之间的转换。它使用格式化字符串(下面解释)作为C结构布局的紧凑描述以及预期的Python值转换。这可用于处理存储在文件或网络连接中的二进制数据以及其他来源。
这是你想要以编程方式做的事吗?或者你在寻找一个十六进制编辑器? – 2009-08-24 14:09:23
@david:我想我想以编程的方式。在我的自定义图像文件中,有7个尺寸定义每个像素,并且它们通过在所有7个维度基本递增而被组织在一个块中。我想撤消它,分离所有7个维度,并重新组合它们,以便它们符合图像的TIF文件规范。我认为最好以编程方式完成,是的? – sepiroth 2009-08-24 14:15:20
我想通过PIL库做TIFF部分。 – Nelson 2009-08-24 14:17:36