TypeError: string argument without an encoding
TypeError: string argument without an encoding
我想将 Json 的压缩 gzip 上传到 Google 存储中。
我有这个代码:
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)
是returnsJson换行分隔的函数。
运行 此代码给出:
TypeError: string argument without an encoding
Python docs 说格式是:bytes([source[, encoding[, errors]]])
我不确定我是否理解它,因为没有如何使用它的示例。
我也试过了
bytes([(create_jsonlines(source))[,encoding='utf8']])
这给出:
SyntaxError: invalid syntax
我是 运行 Python 3.5
你可能离答案只有一步之遥。
函数用法见bytearray() and bytes(您可能需要更改文档的python版本)。
它说:
The optional source parameter can be used to initialize the array in a
few different ways:
- If it is a string, you must also give the encoding (and optionally, errors) parameters; bytearray() then converts the string to bytes
using str.encode().
- If it is an integer, the array will have that size and will be initialized with null bytes.
- If it is an object conforming to the buffer interface, a read-only buffer of the object will be used to initialize the bytes array.
- If it is an iterable, it must be an iterable of integers in the range 0 <= x < 256, which are used as the initial contents of the
array.
注意方括号表示那些参数可以省略,它不是python语言的数组类型。
所以你应该使用 bytes(create_jsonlines(source), encoding='utf8')
.
您没有正确使用 bytes
函数。检查这个:
>>> a = "hi"
>>> bytes(a, encoding='utf8')
b'hi'
你可以试试:
bytes((create_jsonlines(source)), encoding='utf8')
encoding
是 bytes
函数的参数,您在该函数之外使用它。
当您阅读任何 python 函数文档时
bytes([source[, encoding[, errors]]])
方括号表示这些参数是可选的。另一个内的多个方括号表示它们是下一级选项参数。例如
bytes([source....
意味着我们可以将字节称为 byes() 本身,因为 [source]
在这里是可选的
bytes() -> empty bytes object
bytes(22)
此处 22 作为源传递
阅读本文以了解有关字节及其参数的更多详细信息
我想将 Json 的压缩 gzip 上传到 Google 存储中。
我有这个代码:
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)
是returnsJson换行分隔的函数。
运行 此代码给出:
TypeError: string argument without an encoding
Python docs 说格式是:bytes([source[, encoding[, errors]]])
我不确定我是否理解它,因为没有如何使用它的示例。
我也试过了
bytes([(create_jsonlines(source))[,encoding='utf8']])
这给出:
SyntaxError: invalid syntax
我是 运行 Python 3.5
你可能离答案只有一步之遥。
函数用法见bytearray() and bytes(您可能需要更改文档的python版本)。
它说:
The optional source parameter can be used to initialize the array in a few different ways:
- If it is a string, you must also give the encoding (and optionally, errors) parameters; bytearray() then converts the string to bytes using str.encode().
- If it is an integer, the array will have that size and will be initialized with null bytes.
- If it is an object conforming to the buffer interface, a read-only buffer of the object will be used to initialize the bytes array.
- If it is an iterable, it must be an iterable of integers in the range 0 <= x < 256, which are used as the initial contents of the array.
注意方括号表示那些参数可以省略,它不是python语言的数组类型。
所以你应该使用 bytes(create_jsonlines(source), encoding='utf8')
.
您没有正确使用 bytes
函数。检查这个:
>>> a = "hi"
>>> bytes(a, encoding='utf8')
b'hi'
你可以试试:
bytes((create_jsonlines(source)), encoding='utf8')
encoding
是 bytes
函数的参数,您在该函数之外使用它。
当您阅读任何 python 函数文档时
bytes([source[, encoding[, errors]]])
方括号表示这些参数是可选的。另一个内的多个方括号表示它们是下一级选项参数。例如
bytes([source....
意味着我们可以将字节称为 byes() 本身,因为 [source]
在这里是可选的
bytes() -> empty bytes object
bytes(22)
此处 22 作为源传递
阅读本文以了解有关字节及其参数的更多详细信息