在python中,如何将字节作为输入而不进行任何操作?

2024-05-12 13:59:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我把一个字节作为输入 b'\xe2I4\xdd\r\xe5\xfcy^4\xd5'

但它被转换成字符串

因此,当我试图将该字符串转换为字节时,它再次对其进行操作,并将输出作为:

b"b'\\xe2I4\\xdd\\r\\xe5\\xfcy^4\\xd5'"

我希望的输出是,当我提供b'\xe2I4\xdd\r\xe5\xfcy^4\xd5'时,它会将其转换为字节,而无需操作或添加任何字符或符号

任何资源或参考资料都会有所帮助

提前感谢


Tags: 字符串字节符号资源字符参考资料xe5xdd
1条回答
网友
1楼 · 发布于 2024-05-12 13:59:28

坏主意

您可以将input()的值传递给eval()函数。函数eval()直接计算字符串,就像它是在Python中直接执行的一样。虽然一开始它可能感觉是最好的功能,但由于同样的原因,在任何生产级应用程序中使用它几乎是不安全的,因为用户可以使用可能导致很多问题的代码执行任何代码

更好的选择

您可以使用比eval()更安全的替代方法,即ast.literal_eval()。此函数将给定字符串计算为Python文本(如字符串、数字、字节对象等)。如果字符串不包含任何文本(如函数调用、对象创建、赋值等),此函数将抛出错误。够了,让我们看看你是怎么做到的

import ast

user_input = input()
eval_expr = ast.literal_eval(user_input)

如果要检查输入是否为bytes文字,可以使用isinstance函数进行检查,然后执行所需的操作

# Optional: Handle if `eval_expr` is not a `bytes` literal
if not isinstance(eval_expr, bytes):
    ...

因此,您只需首先导入模块ast。然后接受用户的输入。然后将此输入字符串传递给ast.literal_eval()函数以计算字符串

相关问题 更多 >