从字节转换为字符串到字节时字节不相同

Bytes not the same when converting from bytes to string to bytes

我有以下问题。当我通过读取文件的字节时 with open(r'file-path', 'rb') as file: data = file.read() 并使用 'wb' 将此字节对象“数据”写入其他文件。出来的文件很好,没有问题。但是,当我第一次将字节对象“数据”转换为字符串 data_str = str(data) 然后使用 new_data = data_str.encode() 将其转换回来时,“new_data” 看起来与“数据”完全相同,但如果我写“new_data”到一个文件中,该文件无法正常工作。或者就像我的情况一样,即使乍一看字节是相同的,也没有被识别为 mp3 文件。

我知道将字节转换成字符串再转换回字节似乎没用,但在我的情况下我真的必须这样做。

data_str.encode() 期望 data_strdata.decode().

的结果

str(data) 不是 return 解码的字节字符串,它 return 是字节字符串的打印表示,您将在程序中键入的文字。如果要将其转换回字节字符串,请使用 ast.literal_eval().

import ast

with open(r'file-path', 'rb') as file: 
    data = file.read()
    str_data = str(data)
    new_data = ast.literal_eval(str_data)
    print(new_data == data)