我试图使用下面的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。
答案 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)