从字节转换为字符串到字节时字节不相同
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_str
是 data.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)
我有以下问题。当我通过读取文件的字节时
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_str
是 data.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)