我有一个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 :(得分: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)