python - 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'
解决方案
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']