Python ValueError:从bash管道读取png文件时嵌入空字节
错误:Python ValueError:从bash管道读取png文件时嵌入空字节,python,linux,bash,Python,Linux,Bash,错误: from PIL import Image from subprocess import Popen, PIPE scr = Image.open(Popen.communicate(Popen(['import','-w','0x02a00001','png:-'], stdout=PIPE))[0]) 首先尝试将原始数据加载到字节IO容器中: File "/usr/lib/python3/dist-packages/PIL/Image.py", line 2258, in o
from PIL import Image
from subprocess import Popen, PIPE
scr = Image.open(Popen.communicate(Popen(['import','-w','0x02a00001','png:-'], stdout=PIPE))[0])
首先尝试将原始数据加载到
字节IO
容器中:
File "/usr/lib/python3/dist-packages/PIL/Image.py", line 2258, in open
fp = builtins.open(filename, "rb")
ValueError: embedded null byte
Image.open()
采用文件名。如果您试图在Python3上打开一个包含null的文件名,则会出现错误:“ValueError:embedded null byte”。(要查看此操作,请尝试打开('x\0y'))在我看来,将数据包装在BytesIO
中并不能解决此问题。接受文件名(字符串)、pathlib.Path对象或文件对象。通过我的测试,它可以正常工作,我得到了如下结果:
。我得到了纠正。是的,包装数据使其像文件对象一样工作应该可以完成这项工作。
from io import BytesIO
from PIL import Image
from subprocess import Popen, PIPE
data = Popen.communicate(Popen(['import','-w','0x02a00001','png:-'], stdout=PIPE))[0]
scr = Image.open(BytesIO(data))