Python Windows上的管道图像
在Windows shell中运行此命令:Python Windows上的管道图像,python,windows,pipe,Python,Windows,Pipe,在Windows shell中运行此命令: djpeg -pnm -gray text.jpg | gocr - 工作正常-图像由djpeg可执行文件解码,并传递给解码内容的gocr 我想在Python下运行类似于此的任务—将PIL图像管道传输到gocr,而不编写临时文件。例如,我可以指示PIL将PPM格式的图像(由gocr可执行文件接受)写入stdin: im.save(sys.stdin, 'PPM') 但我用管道和子流程模块尝试的任何东西都没有给我带来乐趣 有人能建议如何通过Pytho
djpeg -pnm -gray text.jpg | gocr -
工作正常-图像由djpeg
可执行文件解码,并传递给解码内容的gocr
我想在Python下运行类似于此的任务—将PIL图像管道传输到gocr
,而不编写临时文件。例如,我可以指示PIL将PPM格式的图像(由gocr
可执行文件接受)写入stdin:
im.save(sys.stdin, 'PPM')
但我用管道和子流程模块尝试的任何东西都没有给我带来乐趣
有人能建议如何通过Python-pipe image从PIL到可执行文件运行此任务,并从标准输出中获取文本吗?要写入
gocr
subprocess'stdin,您可以使用subprocess
模块:
from subprocess import Popen, PIPE
p = Popen(["gocr", "-"], stdin=PIPE)
im.save(p.stdin, 'PPM')
p.stdin.close()
p.wait()
如果im.save()
无法使用管道,请首先将图像转换为bytestring:
from subprocess import Popen, PIPE
from StringIO import StringIO
buf = StringIO()
im.save(buf, 'PPM')
p = Popen(["gocr", "-"], stdin=PIPE)
p.communicate(input=buf.getvalue())
谢谢你详尽的回答:)你的两个片段都很好用