python3-将Stdout存储到数组变量中



我有一个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命令的标准输出存储在列表中?

您没有接收命令行输出,而仅收到返回的系统代码。通常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)

最新更新