我希望能够打开一个图像文件和额外的十六进制值逐字节。我不知道如何做到这一点,令人惊讶的是,“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值转换。这可用于处理存储在文件或网络连接中的二进制数据以及其他来源。
- 1. 如何将十六进制字符串转换为十六进制字节?
- 2. 十六进制字节组串
- 3. 将32字节的十六进制字符串转换为16字节的十六进制字符串
- 4. Python - 将一个双字节字符串作为单字节十六进制字符写入二进制文件
- 5. 转换十六进制字符串字节到字节数组
- 6. 将从1M字节为十六进制
- 7. 十六进制值分配给字节
- 8. 将字节打印为十六进制
- 9. Ç打印十六进制字节
- 10. 从十六进制转换为字节
- 11. 双字节十六进制值
- 12. Powershell字节数组到十六进制
- 13. 十六进制为整数(4字节)
- 14. 比较字节到十六进制?
- 15. 转换十六进制字节蟒蛇
- 16. NSString(十六进制)到字节
- 17. 铸造一个字节十六进制
- 18. VB.Net反向字节十六进制值
- 19. 十六进制为字节块
- 20. 编码的十六进制字符串中的字节数
- 21. MIPS的int由字节读字节为十六进制
- 22. C#字符串为十六进制,十六进制到字节转换
- 23. 如何反转十六进制数字的字节?
- 24. Python中的二进制到十六进制,低半字节的第一编码
- 25. 编码字符串为34字节十六进制SQLite密码
- 26. 将字符串编码为十六进制字节
- 27. 将4字节十六进制转换为十进制值
- 28. VB.Net - 将多字节十六进制值转换为十进制
- 29. 初始化从十六进制文字的字节数组
- 30. 如何将十六进制字符串拆分为字节?
这是你想要以编程方式做的事吗?或者你在寻找一个十六进制编辑器? – 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