在 python 中使用 subprocess.popen 和 os.tmp 文件,同时传递可选参数
我正在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 -layout”替换“pdftotext”等。但这些都不起作用。他们都给了我一个空文本。由于输入是通过临时文件输入的,因此我无法弄清楚参数列表。 Popen 上的大多数文档都假设所有参数都通过参数列表传入,但在我的例子中,输入是通过临时文件传入的。
任何帮助将不胜感激。
I am writing a python program in linux and in part of it running the pdftotext executable to convert a pdf text. The code I am currently using is given below.
pdfData = currentPDF.read()
tf = os.tmpfile()
tf.write(pdfData)
tf.seek(0)
out, err = subprocess.Popen(["pdftotext", "-", "-"], stdin = tf, stdout=subprocess.PIPE ).communicate()
This works fine, but now I want to run the pdftotext executable with the -layout option (preserves layout of document). I tried replacing the "-" with layout, replacing "pdftotext" with "pdftotext -layout" etc. None of it works. They all give me an empty text. Since the input is being piped in via the temp file, I am having trouble figureing out the argument list. Most of the documentation on Popen assumes all the parameters are being passed in through the argument list, but in my case the input is being passed in through the temp file.
Any help would be greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这对我有用:
虽然我在手册页中找不到明确的确认,但我相信第一个
-
告诉pdftotext
期望PDF-file
来自标准输入,第二个-
告诉pdftotext
期望将text-file
发送到标准输出。This works for me:
Although I couldn't find explicit confirmation in the man page, I believe the first
-
tellspdftotext
to expectPDF-file
to come from stdin, and the second-
tellspdftotext
to expecttext-file
to be sent to stdout.您可以使用 shell=True 以字符串形式传递完整命令:
You can pass the full command in string with shell=True: