你如何在 base64.b64encode 上使用可变参数,但当我不使用提示 window 时?

How do you use a variable argument on base64.b64encode but when i am not using the prompt window?

这个问题类似于 this 这里的一个问题,但是如果我像这样把它放到这段代码中:

import base64
theone = input('Enter your plaintext: ')
encoded = str(base64.b64encode(theone))
encoded = base64.b64encode(encoded.encode('ascii'))
encoded = encoded[2:]
o = len(encoded)
o = o-1
encoded = encoded[:o]
print(encoded)

它提出了这个问题:

line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'

然后如果我删除这行代码:

encoded = base64.b64encode(encoded.encode('ascii'))

然后它引发了同样的错误。我不确定从这里可以做什么,如果有任何帮助,我将不胜感激。

您似乎在使用 bytesstrings 时遇到了问题。输入返回的值是字符串 (str),但 base64.b64encode 需要字节 (bytes)。

如果您打印一个 bytes 实例,您会看到类似

的内容
b'spam'

要删除前导 'b',您需要解码回 str

要使您的代码正常工作,请将字节传递给 base64.b64encode,并对结果进行解码以打印它。

>>> theone = input('Enter your plaintext: ')
Enter your plaintext: Hello World!
>>> encoded = base64.b64encode(theone.encode())
>>> encoded
b'SGVsbG8gV29ybGQh'
>>> print(encoded.decode())
SGVsbG8gV29ybGQh