Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Windows上的管道图像_Python_Windows_Pipe - Fatal编程技术网

Python Windows上的管道图像

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

在Windows shell中运行此命令:

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

谢谢你详尽的回答:)你的两个片段都很好用