七牛 python API q.private_download_url(url, expires=3600) 乱码

在使用七牛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)
>>>

请问如何正确获得数据?

阅读 3.5k
1 个回答

你可以直接通过 url?attname=预期的文件名 来下载文件即可,不需要通过代码那么麻烦

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进