开发者社区> 问答> 正文

CDNAPIpython版接口问题

使用了几天CDN API接口下载日志,每次手动执行脚本,都是成功的,但用系统任务计划执行,都是失败的,
原因:
日志中记录的执行报错信息:decode() argument 1 must be string, not None


这个信息是在接口脚本:aliyun/api/base.py引发的
引发的相关代码:

def percent_encode(encodeStr):
    encodeStr = str(encodeStr)
     res = urllib.quote(encodeStr.decode(sys.stdin.encoding).encode('utf8'), '')
    res = res.replace('+', '%20')
    res = res.replace('*', '%2A')
    res = res.replace('%7E', '~')
    return res


具体是出在 sys.stdin.encoding
备注:
终端的输入编码:sys.stdin.encoding终端的输出编码:sys.stdout.encoding


用任务计划自动执行的时候,就不涉及终端输入了,结果就报错了


我把sys.stdin.encoding去掉了,系统crontab执行就正常了
修改后的代码:

def percent_encode(encodeStr):
    encodeStr = str(encodeStr)
   res = urllib.quote(encodeStr.encode('utf8'), '')
     #res = urllib.quote(encodeStr.decode(sys.stdin.encoding).encode('utf8'), '')
    res = res.replace('+', '%20')
    res = res.replace('*', '%2A')
    res = res.replace('%7E', '~')
    return res



展开
收起
吕不为 2015-07-23 09:46:05 7173 0
1 条回答
写回答
取消 提交回答
  • ReCDNAPIpython版接口问题
    这个问题困扰了我一个月了
    2017-12-04 14:43:32
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Boot2.0实战Redis分布式缓存 立即下载
CUDA MATH API 立即下载
API PLAYBOOK 立即下载