编码和解码MP3文件
我想把一个mp3文件保存为编码后的字符串,然后放在一个文本文件里,但我的代码运行不成功。
import sys, base64
f = open(sys.argv[1], 'r')
b = base64.b64encode(f.read())
print sys.getsizeof(b)
f.close()
try:
file = open(sys.argv[2] + '.txt', 'w')
file.write(b)
file.close()
except:
print('Something went wrong!')
sys.exit(0)
f = open(sys.argv[2] + '.txt', 'r').read()
b = base64.b64decode(f)
f.close()
try:
file = open(sys.argv[2] + '2.mp3', 'w')
file.write(b)
file.close()
except:
print('Something went wrong!')
sys.exit(0)
这个编码后的字符串太短了,不能代表完整的内容,所以结果不好。那么,为什么它“不能”正常工作呢?
1 个回答
6
好的,我达成了我的个人目标。
正如 pentadecagon 提到的:
你需要用 'rb' 来打开文件,因为它是二进制格式的。使用 len 而不是 sys.getsizeof。
f = open(sys.argv[2] + '.txt', 'r').read()
b = base64.b64decode(f)
f.close()
我把这个改成了
f = open(sys.argv[2] + '.txt', 'r')
b = base64.b64decode(f.read())
f.close()
所以我做了这些修改,当我最终再次创建 mp3 文件时,需要用二进制的 'wb' 来写入,这样就可以了。