编码和解码MP3文件

4 投票
1 回答
8389 浏览
提问于 2025-04-18 08:09

我想把一个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' 来写入,这样就可以了。

撰写回答