为什么通过 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 方法。
编辑
阅读了一个类似措辞的问题 - 我相信这在范围上有所不同,因为我想了解为什么输出不同。
相关分类