首页 > 解决方案 > TypeError: a bytes-like object is required, not 'str' : 得到这个错误

问题描述

出现错误:字节和 str 类型之间的冲突

old_server_uuid = p3.communicate()[0].split("|")[1].strip()

收到以下错误:

Traceback (most recent call last):
  File "create_env_file.py", line 68, in <module>
    data = create_env_source_list(node_name, ip_address)
  File "create_env_file.py", line 14, in create_env_source_list
    raise(ex)
  File "create_env_file.py", line 12, in create_env_source_list
    old_server_uuid = p3.communicate()[0].split("|")[1].strip()
TypeError: a bytes-like object is required, not 'str'

标签: pythonpython-3.x

解决方案


Python 3 不允许混合文本 (Unicode) 字符串和字节字符串。

的结果p3.communicate()[0]是一个字节串,所以.split参数也必须是 1。

例子:

用 Unicode 字符串拆分字节字符串:

>>> b'abc|123'.split('|')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: a bytes-like object is required, not 'str'

用字节串分割字节串:

>>> b'abc|123'.split(b'|')
[b'abc', b'123']

推荐阅读