我希望能夠打開一個圖像文件和額外的十六進制值逐字節。我不知道如何做到這一點,令人驚訝的是,「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