Python 从存储为字符串的字节创建文件

Python 从存储为字符串的字节创建文件,python,python-3.x,byte,Python,Python 3.x,Byte,我有一个用例,我从数据库中得到一个blob,我必须将它转换成二进制文件。Python将其存储为字符串,尽管它实际上是字节。当我尝试以二进制方式写入时,我得到一个类型错误,str not accepted 我编写了一些示例代码来重现变量的外观。我见过其他语言中的示例代码,在这些语言中,这项任务相当容易。如果您能使用python 3帮助解决此问题,我们将不胜感激。这可能是很简单的事情,我错过了,我无法在网上找到答案 import binascii f = open('test.xlsx', 'rb

我有一个用例,我从数据库中得到一个blob,我必须将它转换成二进制文件。Python将其存储为字符串,尽管它实际上是字节。当我尝试以二进制方式写入时,我得到一个类型错误,str not accepted

我编写了一些示例代码来重现变量的外观。我见过其他语言中的示例代码,在这些语言中,这项任务相当容易。如果您能使用python 3帮助解决此问题,我们将不胜感激。这可能是很简单的事情,我错过了,我无法在网上找到答案

import binascii

f = open('test.xlsx', 'rb')
content = binascii.hexlify(f.read())
f.close

output = content.decode("utf-8")

#output2 = hex(int(output, 16))

f = open('temp', 'wb')
f.write(output) #TypeError: a bytes-like object is required, not 'str' 
f.close()

#Convert back to type bytes and recreate the file
你可以写:

f.write(bytearray(output,"utf-8"))
而不是:

f.write(output) #TypeError: a bytes-like object is required, not 'str' 

解决这个问题。尽管这似乎不是最适合的方式。

尝试
f.write(bytes(output,'utf-8'))
尝试将字符串转换为字节数组,例如gg=bytearray(textstring,'latin-1'),然后将其写出。不要
binascii.hexlify
输入文件中的数据。只需
read()
读取并写入即可。以二进制模式从文件读取的数据已经是一个类似字节的对象
hexlify
正在将其转换为Python 3中的utf-8字符串。