Python3 - 将标准输出存储到数组变量中
Python3 - Store stdout into an array variable
我有一个 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 脚本。 shorthand 是:
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)
我有一个 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 脚本。 shorthand 是:
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)