我正在用linux编写一个python程序,在其中的一部分运行pdftotext可执行文件来转换pdf文本。我目前使用的代码如下所示。
pdfData = currentPDF.read()
tf = os.tmpfile()
tf.write(pdfData)
tf.seek(0)
out, err = subprocess.Popen(["pdftotext", "-", "-"], stdin = tf, stdout=subprocess.PIPE ).communicate()这可以很好地工作,但是现在我想使用-layout选项运行pdftotext可执行文件(保留文档的布局)。我尝试将"-“替换为布局,将"pdftotext”替换为"pdftotext -layout“等等,但都不起作用。他们都给了我一个空文本。由于输入是通过临时文件输入的,所以我在计算参数列表时遇到了问题。大多数关于Popen的文档都假设所有参数都是通过参数列表传入的,但在我的例子中,输入是通过临时文件传入的。
任何帮助都将不胜感激。
发布于 2010-10-10 02:25:22
这对我来说很有效:
out, err = subprocess.Popen(
["pdftotext", '-layout', "-", "-"], stdin = tf, stdout=subprocess.PIPE ).communicate()尽管我在手册页中找不到明确的确认,但我相信第一个-告诉pdftotext期望PDF-file来自标准输入,第二个-告诉pdftotext期望将text-file发送到标准输出。
发布于 2010-10-10 02:11:00
您可以使用shell=True在字符串中传递完整的命令:
out, err = subprocess.Popen('pdftotext -layout - -', shell=True, stdin=tf, stdout=subprocess.PIPE).communicate()https://stackoverflow.com/questions/3896795
复制相似问题