我正在从证券交易委员会的文件中提取PDF。他们通常是这样来的:
证交会提交示例
无论出于什么原因,当我将原始PDF保存到一个.text文件时,然后尝试运行
uudecode -o output_file.pdf input_file.txt
从python函数或允许从命令行执行命令的任何其他python函数中,生成的subprocess.call()文件都已损坏。如果我直接从命令行运行这个命令,就不会有任何损坏。
当仔细查看从python脚本输出的PDF文件时,该文件似乎过早结束。从python执行命令行命令时是否存在某种输出限制?
谢谢!
发布于 2015-07-06 19:48:22
这个脚本运行在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文件(长度: 173,141 B;sha1:e4f7fa2cbb3422411c2f2968d954d6bb9808b884),解码的PDF (长度: 124,557 B;sha1:1676320e1d9923e14d19451c16688198bc93ca0d)显示正确。
在您的环境中可能有其他原因导致了问题。您可能需要在您的问题中添加其他细节。
从python执行命令行命令时是否存在某种输出限制?
如果“输出限制”指的是uudecode正在写入的文件的大小,则为否。在使用subprocess模块时,唯一需要担心的“输出限制”是在创建子进程时传递stdout=PIPE或stderr=PIPE。如果子进程向这些流中的任何一个写入足够的数据,并且您的脚本不定期地将它们排出,子进程将被阻塞(请参阅subprocess模块文档)。在我的测试中,uudecode没有给stdout或stderr写任何东西。
https://stackoverflow.com/questions/31253616
复制相似问题