我试图在python中手动打开和解释P6 ppm图像文件。ppm p6文件开头有几行纯ascii,后面是二进制的实际图像数据(这与ppm p3文件形成对比,后者都是纯文本)。
我发现了一些模块,可以读取ppm文件(opencv, numpy),但我真的很想尝试手工做(特别是因为ppm应该是一个相当简单的图像格式)。
当我尝试打开和读取文件时,我遇到错误,无论我使用open("image.ppm", "rb")
还是open("image.ppm", "r")
,因为它们都期望文件只是二进制或纯文本。
所以,更广泛地说:有没有一种简单的方法来打开python中混合二进制/文本的文件?
您可以这样做,open
在rb
模式下的文件,并检查当前byte
是否为printable
,如果它是print
作为character
,如果不是print
作为hex value
。
import string
with open("file name", "rb") as file:
data = file.read()
# to print, go through the file data
for byte in data:
# check if the byte is printable
if chr(byte) in string.printable:
# if it is print as character
print(chr(byte), end="")
else:
# if it isn't print the hex value
print(hex(byte), end="")