猿问

为什么 subprocess.run 不读取新行而 subprocess.call 呢?

为什么通过 subprocess.call 调用可执行文件会给 subprocess.run 不同的结果?


call 方法的输出是完美的——所有新行都被删除了,文档的格式完全正确,'-' 字符、项目符号和表格都得到了完美的处理。


然而,使用 run 方法运行完全相同的函数并从 stdout 读取输出完全抛出输出。充满'\n'、'Â\xad'、'\x97'、'\x8f' 字符,到处都是空格。


这是我正在使用的代码:


子进程调用


result=subprocess.call(['/path_to_pdftotext','-layout','/path_to_file.pdf','-'])

子进程运行


result=subprocess.run(['/path_to_pdftotext','-layout','/path_to_file.pdf','-'],stdout=PIPE, stderr=PIPE, universal_newlines=True, encoding='utf-8')

我不明白为什么 run 方法不以相同的方式解析和显示文件。我会使用 call 但是我需要将 pdftotext 转换的结果保存到一个变量中(在运行的情况下:var = result.stdout)。


我可以通过并确定它在运行中没有拾取的所有 unicode 并将其剥离,但我认为必须只有一些编码/解码设置才能改变 run 方法。


编辑


阅读了一个类似措辞的问题 - 我相信这在范围上有所不同,因为我想了解为什么输出不同。


30秒到达战场
浏览 138回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答