TypeError:不带编码的字符串参数

发布于 2021-01-29 14:58:59

我想将Json的压缩gzip上传到Google Storage。

我有以下代码:

import datalab.storage as storage
import gzip
path = prefix + '/orders_newline.json.gz'
storage.Bucket('orders').item(path).write_to(gzip.compress(bytes(create_jsonlines(source)),encoding='utf8'), 'application/json')

create_jsonlines(source)是返回的Json换行符分隔的功能。

运行此代码将给出:

TypeError: string argument without an encoding

Python文档说,格式是:bytes([source[, encoding[, errors]]])我不知道我把它理解为不存在如何使用它的例子。

我也尝试过

bytes([(create_jsonlines(source))[,encoding='utf8']])

这给出了:

SyntaxError: invalid syntax

我正在运行Python 3.5

关注者
0
被浏览
98
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您没有bytes正确使用该功能。检查一下:

    >>> a = "hi"
    >>> bytes(a, encoding='utf8')
    b'hi'
    

    你可以试试:

    bytes((create_jsonlines(source)), encoding='utf8')
    

    encoding是该bytes函数的参数,而您正在该函数之外使用它。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看