python - 无法在提示下获得工作命令行以处理子进程
问题描述
我需要从 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
,但是没有用。谁能帮我?
解决方案
安装您尝试使用的 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 无效,那么您至少会知道问题的原因。
推荐阅读
- spring - UTF-8 编码从 Spring 服务器加载为 ISO-8859-1
- laravel - Laravel 404 未找到 - 但路线存在
- c# - C# 在未知模块中使用互操作未处理的“System.IO.FileNotFoundException”加载 Excel 文件
- node.js - 使获得拒绝值成为可能
- amazon-web-services - 限制 AWS unauth cognito 用户的使用
- flutter - Flutter/dart 和静态 Widget 方法。模式不好?
- python - Python beautifulsoup:从 img src 获取占位符
- excel - 通过 Excel 发送电子邮件
- python - 有没有比这更好的方法来编写“依赖参数”的 Python 函数?
- laravel-5 - 无法在数据库中创建新表