编码和解码 mp3 文件

Jon*_*mer 4 python

我想将 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)
Run Code Online (Sandbox Code Playgroud)

编码的字符串太短,无法成为完整的字符串,因此没有好的结果。那么为什么它“不起作用”呢?

Jon*_*mer 6

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

正如十五边提到的:

您需要使用“rb”调用 open,因为它是二进制的。使用 len 而不是 sys.getsizeof。

f = open(sys.argv[2] + '.txt', 'r').read()
b = base64.b64decode(f)
f.close()
Run Code Online (Sandbox Code Playgroud)

我把这个改为

f = open(sys.argv[2] + '.txt', 'r')
b = base64.b64decode(f.read())
f.close()
Run Code Online (Sandbox Code Playgroud)

所以我改变了它,当我最终再次创建 mp3 文件时,您需要编写二进制“wb”并且它可以工作。