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))