Python Uudecode调用损坏

2024-05-15 17:48:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正致力于从美国证券交易委员会的文件中提取PDF文件。它们通常是这样的:

SEC Filing Example

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

uudecode -o output_file.pdf input_file.txt

从pythonsubprocess.call()函数或允许从命令行执行命令的任何其他python函数中,生成的PDF文件已损坏。如果我直接从命令行运行同一个命令,就不会损坏。在

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

谢谢!在


Tags: 文件函数text命令行命令pdfexample原因
1条回答
网友
1楼 · 发布于 2024-05-15 17:48:49

这个脚本在python3.4.1下运行,在Fedora 21 x86_64上运行,uudecode 4.15.2:

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

使用链接的SEC文件(长度:173141b;sha1:e4f7fa2cbb3422411c2f2968d954d6bb9808b884),解码后的PDF(长度:124557b;sha1:1676320e1d9923e14d19451c16688198bc93ca0d)在查看时看起来是正确的。在

您的环境中可能有其他因素导致了问题。您可能需要在您的问题中添加其他详细信息。在

Is there some sort of output limit when executing a command line command from python?

如果所说的“output limit”是指uudecode所写文件的大小,那么就不是了。在使用subprocess模块时,唯一需要担心的“output limit”类型是在创建子进程时传递stdout=PIPE或{}。如果子进程向这两个流中的任何一个写入足够的数据,而您的脚本没有定期排出它们,则子进程将阻塞(请参阅^{}模块文档)。在我的测试中,uudecode没有向stdout或{}写入任何内容。在

相关问题 更多 >