因此,我正在尝试创建一个非常简单的程序来打开文件,读取文件并使用python3将文件中的内容从十六进制转换为base64。
我尝试过:
file = open("test.txt", "r")
contenu = file.read()
encoded = contenu.decode("hex").encode("base64")
print (encoded)
但是我得到了错误:
AttributeError: 'str' object has no attribute 'decode'
我尝试了其他多种方法,但总是得到相同的错误。
在test.txt中的是:
4B
如果你们能向我解释我做错了,那就太好了。
谢谢
编辑:
我应该得到Sw==
作为输出
答案 0 :(得分:0)
这应该可以解决问题。您的代码适用于Python <= 2.7,但适用于needs updating in later versions。
import base64
file = open("test.txt", "r")
contenu = file.read()
bytes = bytearray.fromhex(contenu)
encoded = base64.b64encode(bytes).decode('ascii')
print(encoded)
答案 1 :(得分:0)
您需要先使用test.txt
将文件bytes.fromhex()
中的十六进制字符串编码为类似字节的对象,然后再将其编码为base64。
import base64
with open("test.txt", "r") as file:
content = file.read()
encoded = base64.b64encode(bytes.fromhex(content))
print(encoded)
您应始终使用with
语句打开文件,以在完成后自动关闭I / O。
在空闲状态:
>>>> import base64
>>>>
>>>> with open('test.txt', 'r') as file:
.... content = file.read()
.... encoded = base64.b64encode(bytes.fromhex(content))
....
>>>> encoded
b'Sw=='