2009-12-02 48 views
4

以下代码打印一个空行作为输出,该行为false。 问题不在权限中,因为我测试了带有pdf文件的777权限的命令。 如何修复命令以提供正确的输出?Python中的子流程Popen和PIPE

import subprocess 
from subprocess import PIPE, Popen 
output = Popen(['pdftotext', '/home/aal/Desktop/lkn_pdf/appa.pdf'], stdout=PIPE).communicate()[0] 
+1

无关:在Python 2.7+,你可以把它写为'输出= check_output([ 'pdftotext',' /home/aal/Desktop/lkn_pdf/appa.pdf',' - '])'如果您想为非零退出状态引发异常。 – jfs

+0

@ J.F.Sebastian我认为你的评论应该是一个答案。 –

+0

评论是针对来自谷歌的访问者由于问题标题。但是'check_output'与'.communicate'与你的真正问题没有任何关系:提供输出文件名为'-',以便'pdftotext'写入管道(它的标准输出)并且该部分已经被回答。 – jfs

回答

6

pdftotext默认创建一个文件。将结果发送到标准输出,使用方法:

pdftotext file.pdf - 

或在Python:

output = Popen(['pdftotext', '/home/aal/Desktop/lkn_pdf/appa.pdf', '-'], stdout=PIPE).communicate()[0]