使用python从服务器获取pdf文件集作为zip文件

时间:2016-01-22 04:48:20

标签: python pdf server zip

我试图使用下面的python代码将服务器中存在的pdf文件集作为zip文件。但是我无法这样做,有人可以帮我解决这个问题。无论我在这段代码中给出了什么,我都可以将它们放在一个zip文件中。

提前谢谢。

import requests
import json

def downloadLabels(awbs):
    if awbs:
        url = 'http://<server's ip>/Labels/downloadLabels'
        resp = requests.post(url, data={'files': json.dumps(','.join(awbs))})
        print resp.json()
    else:
        print "NO AWB Provided"

downloadLabels(['1234','6789','1011'])

awb是一个用逗号分隔的数字列表,使用这个awbs只会得到服务器中存在的那些pdf。

1 个答案:

答案 0 :(得分:1)

首先,您应该尝试获取每个pdf的二进制内容

http://docs.python-requests.org/en/latest/user/quickstart/#binary-response-content中的请求文档给出了代码示例:

>>> from PIL import Image
>>> from StringIO import StringIO
>>> i = Image.open(StringIO(r.content))

在您的情况下,您可以通过resp.content

获取二进制内容

然后,您可以将每个pdf写入zip文件

zipfile是执行此类工作的标准库。您只需创建一个可写的Zipfile对象,并将pdfs写入此Zipfile对象。我认为writestr函数可以将文件内容作为二进制字符串,并将这些内容写入zipfile。

代码可能如下所示:

with ZipFile('zipfilename.zip', 'w') as myzip:
    myzip.writestr('nameinthezipfile', resp.content)