在使用七牛python SDK的时候,从七牛云读文件,出现乱码
# -*- coding: utf-8 -*-
# flake8: noqa
import qiniu
import requests
import json
import sys
def readQiniu(qiniuLocation, qiniuDate, localFile):
try:
q = qiniu.Auth(constants.QINIU_AK(), constants.QINIU_SK())
ret, eof, info = qiniu.BucketManager(q).list(qiniuLocation,qiniuDate)
allDayTexts = json.loads(info.text_body).get('items')
urls = []
# get keys
for dayText in allDayTexts:
key = dayText.get('key')
urls.append('http://{domain}/{key}'.format(
domain=constants.QINIU_PUBLIC_DOMAIN_NAME(),
key=key))
for url in urls:
if url.endswith('txt'):
private_url = q.private_download_url(url, expires=3600)
r = requests.get(private_url)
for row in r.text.split('\n')[1:]:
print(row)
except Exception, e:
logger.error('!!!!!! Error in readQiniu'+str(e))
raise e
在读row的时候
>>> row
u'\xb8\x82,\xe4\xb8\xad\xe5\x9b\xbd,\xe5\xa4\xa9\xe5\x9f\x9f\xe4\xb8\xad\xe5\x8c\xbb\xe5\x85\xbb\xe7\x94\x9f;\xe5\xa8\x81\xe5\xbb\x89\xe8\xa5\xbf\xe9\xa4\x90\xe5\x8e\x85;\xe6\xac\xa3\xe5\x9c\x86(\xe5\xa4\xa7\xe4\xb8\x9c\xe6\xb5\xb7\xe5\xba\x97);\xe6\xac\xa3\xe5\x9c\x86\xe8\x9b\x8b\xe7\xb3\x95\xe5\xba\x97;\xe4\xbf\x84\xe5\xbc\x8f\xe8\xa5\xbf\xe9\xa4\x90\xe5\x8e\x85,\xe5\xa4\xa7\xe4\xb8\x9c\xe6\xb5\xb7,\xe6\xb5\xb7\xe5\x8d\x97\xe7\x9c\x81,\xe6\xa6\x86\xe4\xba\x9a\xe5\xa4\xa7\xe9\x81\x93,\xe5\xb8\'
>>> print (row.decode('utf-8'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 737-745: ordinal not in range(128)
>>>
请问如何正确获得数据?
你可以直接通过 url?attname=预期的文件名 来下载文件即可,不需要通过代码那么麻烦