使用urllib下载二进制加密文件,将其保存为流

时间:2015-07-20 14:07:22

标签: python python-3.x urllib binary-data gnupg

所以,我想用urllib下载一个二进制文件(用gpg加密)。现在,如果我要管它:

this_script.py > file1  

我应该能够解密二进制文件1但是,gpg只是给出了一个错误。我不想在python中保存文件,因为我需要它来解密下载文件的程序。另外我不能使用urlretireve,因为我无法欺骗useragent字符串,这会导致网站给我403 Forbidden Error。

import urllib
url = <link_to_any_binary_file>
req = urllib.request.Request(
        url,
        data=None,
         headers={
              'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0'
                 }
                            )   
file_response = urllib.request.urlopen(req)
binary_file = file_response.read()
print(binary_file)

1 个答案:

答案 0 :(得分:0)

当您调用print()时,标准Python解释器将以二进制字符串表示法包装二进制内容(b&#39;字符串内容&#39;)。额外的角色可能搞乱了GPG对该文件的读取。如果管道对您非常重要,或者只是在Python中快速编写,您可以尝试手动删除多余的字符:

binary_file = file_response.read()
with open('file1', 'wb') as output:
    output.write(binary_file)

(我不明白你明显厌恶这种情况)

编辑: 您还可以使用sys.stdout对象:

binary_file = file_response.read()
import sys
sys.stdout.buffer.write(binary_file)