首页 > 解决方案 > 无法在提示下获得工作命令行以处理子进程

问题描述

我需要从 PDF 中提取文本。我尝试了 PyPDF2,但 textExtract 方法返回了一个加密的文本,即使 pdf 没有按照 isEncrypted 方法加密。

所以我继续尝试从命令提示符访问一个执行该工作的程序,这样我就可以从 python 中使用 subprocess 模块调用它。我找到了这个名为 的程序textExtract,它在 cmd 上使用以下命令行完成了我想要的工作:

"textextract.exe" "download.pdf" /to "download.txt"

但是,当我尝试运行它时,subprocess我无法获得0返回码。

这是我尝试过的代码:

textextract = shlex.split(r'"textextract.exe" "download.pdf" /to "download.txt"')
subprocess.run(textextract)

我已经尝试过shell=True,但是没有用。谁能帮我?

标签: pythonpdfcmdsubprocesspypdf2

解决方案


安装您尝试使用的 PDF2Text Pilot 应用程序后,我能够从命令行获取以下脚本:

import shlex
import subprocess

args = shlex.split(r'"textextract.exe" "download.pdf" /to "download.txt"')
print('args:', args)
subprocess.run(args)

从命令行会话运行它的示例屏幕输出:

> C:\Python3\python run-textextract.py
args: ['textextract.exe', 'download.pdf', '/to', 'download.txt']
Progress:
Text from "download.pdf" has been successfully extracted...
Text extraction has been completed!

上面的输出是使用 Python 3.7.0 生成的。

我不知道您在 anaconda 上使用 spyder 是否会影响事情,因为我不熟悉它/它们。如果你仍然有这个问题,那么,如果可能的话,我建议你看看你是否可以让事情直接工作 - 即从类似于上面显示的命令行手动运行脚本上的 Python 解释器。如果这有效,但使用 spyder 无效,那么您至少会知道问题的原因。


推荐阅读