我有一个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)