编码和解码mp3文件

4
我想将一个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)

编码后的字符串太短,无法代表完整的字符串,因此结果不理想。那么为什么会“不起作用”呢?

9
因为它是二进制文件,所以您需要使用“ 'rb'” 来调用“ open”。请使用“ len” 代替“ sys.getsizeof”。请问这是Python 2还是Python 3? - pentadecagon
1个回答

6

好的,我已经达到了我的个人目标。

正如所提到的:

你需要使用'rb'调用open,因为它是二进制的。使用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',这样就可以正常工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接