一尘不染

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

python

我想将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


阅读 221

收藏
2021-01-20

共1个答案

一尘不染

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

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

你可以试试:

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

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

2021-01-20