0

我正在从 SEC 文件中提取 PDF。他们通常是这样来的:

美国证券交易委员会备案示例

无论出于何种原因,当我将原始 PDF 保存到 .text 文件,然后尝试运行

uudecode -o output_file.pdf input_file.txt

从 pythonsubprocess.call()函数或任何其他允许从命令行执行命令的 python 函数,生成的 PDF 文件已损坏。如果我直接从命令行运行相同的命令,则没有损坏。

当仔细查看从 python 脚本输出的 PDF 文件时,看起来文件过早结束。从 python 执行命令行命令时是否存在某种输出限制?

谢谢!

4

1 回答 1

1

该脚本对我在 Fedora 21 x86_64 上使用 uudecode 4.15.2 在 Python 3.4.1 下运行时运行良好:

import subprocess
subprocess.call("uudecode -o output_file.pdf input_file.txt", shell=True)

使用链接的 SEC 文件(长度:173,141 B;sha1:)e4f7fa2cbb3422411c2f2968d954d6bb9808b884,解码的 PDF(长度:124,557 B;sha1:)1676320e1d9923e14d19451c16688198bc93ca0d在查看时显示正确。

您的环境中可能存在其他问题导致问题。您可能想为您的问题添加其他详细信息。

从 python 执行命令行命令时是否存在某种输出限制?

如果“输出限制”是指正在写入的文件的大小uudecode,则不是。subprocess使用模块时唯一需要担心的“输出限制”类型是通过时stdout=PIPEstderr=PIPE创建子进程时。如果子进程向这些流中的任何一个写入足够的数据,并且您的脚本没有定期耗尽它们,则子进程将阻塞(请参阅subprocess模块文档)。在我的测试中,uudecode什么也没写到stdoutor stderr

于 2015-07-06T19:48:22.097 回答