Python3-将标准输出存储到数组变量中

时间:2019-05-21 10:08:39

标签: python python-3.x pdftotext

我有一个Python脚本,可将PDF内容转换为字符串。

text = list();

#npages is number of pages in the PDF file.
for n in range(npages):
    text[n] = os.system('pdftotext myfile.pdf -') #the "-" prints to stdout.

print(text)

但是,当我打印text时,这是输出(具有两页的PDF文件):

{0: 0, 1: 0}

运行脚本时,我看到os.system输出被发送到命令行:

text from myfile.pdf page 1
text from myfile.pdf page 2

如何将pdftotext命令的标准输出存储在列表中?

1 个答案:

答案 0 :(得分:3)

您不接收命令行输出,仅接收返回的系统代码。通常,0表示成功,这意味着npages 0和1的命令均成功。

您可以使用subprocess并将输出重定向到您的Python脚本。简写为:

import subprocess

out = subprocess.check_output(['ls', '-lh']) # example
print(out)

要接受简短的-,您需要使用subprocess.Popen(bufsize=0)。这应该起作用:

cmd = ['pdftotext', 'myfile.pdf', '-']
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=0)
# get output and error
out, err = proc.communicate()

print(out)