使用 python 的 eval() 与 ast.literal_eval()

2024-01-24

我遇到一些代码的情况eval()提出了一个可能的解决方案。现在我从来没有使用过eval()但在此之前,我已经了解到很多有关它可能造成的潜在危险的信息。也就是说,我对使用它非常谨慎。

我的情况是我有用户提供的输入:

datamap = input('Provide some data here: ')

Where datamap需要是一本字典。我四处搜寻发现eval()可以解决这个问题。我认为我可以在尝试使用数据之前检查输入的类型,这将是一种可行的安全预防措施。

datamap = eval(input('Provide some data here: ')
if not isinstance(datamap, dict):
    return

我通读了文档,但我仍然不清楚这是否安全。 eval 是在输入数据后立即评估数据还是在数据输入后评估数据datamap变量被称为?

Is the ast模块的.literal_eval()唯一安全的选择?


datamap = eval(input('Provide some data here: '))意味着您实际评估代码before你认为它是否不安全。一旦函数被调用,它就会评估代码。也可以看看的危险eval http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html.

ast.literal_eval https://docs.python.org/3/library/ast.html#ast.literal_eval如果输入不是有效的 Python 数据类型,则会引发异常,因此如果不是有效的代码将不会执行。

Use ast.literal_eval每当你需要的时候eval https://docs.python.org/3/library/functions.html#eval。您通常不应该评估字面的 Python 语句。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python 的 eval() 与 ast.literal_eval() 的相关文章

  • numba 函数何时编译?

    我正在研究这个例子 http numba pydata org numba doc 0 15 1 examples html multi threading http numba pydata org numba doc 0 15 1 ex
  • 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

    我在 Cloud9 中使用 Python AWS CDK 并且我部署简单的 Lambda 函数那应该是发送 API 请求到 Atlassian 的 API当对象上传到 S3 存储桶时 也是由 CDK 创建的 这是我的 CDK 堆栈代码 fr
  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • 如何计算numpy数组中元素的频率?

    我有一个 3 D numpy 数组 其中包含重复的元素 counterTraj shape 13530 1 1 例如 counterTraj 包含这样的元素 我只显示了几个元素 array 136 129 130 103 102 101 我
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • Python urllib.request.urlopen:AttributeError:'bytes'对象没有属性'data'

    我正在使用 Python 3 并尝试连接到dstk 我收到错误urllib包裹 我对SO进行了很多研究 但找不到与这个问题类似的东西 api url self api base street2coordinates api body jso
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 如何在 python 中没有 csv.reader 迭代器的情况下解析单行 csv 字符串?

    我有一个 CSV 文件 需要重新排列和重新编码 我想跑 line line decode windows 1250 encode utf 8 在由 CSV 读取器解析和分割之前的每一行 或者我想自己迭代行 运行重新编码 并仅使用单行解析表单
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 迭代 my_dict.keys() 并修改字典中的值是否会使迭代器失效?

    我的例子是这样的 for my key in my dict keys my dict my key mutate 上述代码的行为是否已定义 假设my dict是一本字典并且mutate是一个改变其对象的方法 我担心的是 改变字典中的值可能
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户

随机推荐

  • 在 UITableView 中取消选择行时如何从数组中删除项目

    我正在尝试从 a 中捕获选定的项目UITableView并将它们保存到一个新数组中 以下代码通过在点击行时添加项目来创建新数组 但它不会在取消选择行时删除项目 如何从列表中删除项目newFruitList当a中的一行UITableView被
  • 在 Ant build.xml 中使用 Compass 编译 SASS

    有谁知道如何使用 JRuby 和 Compass 模块在 build xml 中编译 SASS scss 文件 我可以在 sass 独立安装中使用 Sass Exec 模块 通过以下方式从 scss 编译为 css
  • NHibernate 错误消息:此 SqlParameterCollection 的索引 3 无效,计数 = 3

    I have a test database design like this 以下是伪代码 BhillHeader public class BillHeader public BillHeader BillDetails new Lis
  • std::regex 和忽略标志

    学习基础后c questions tagged c 2b 2b规则 我专注于std regex 创建两个控制台应用程序 1 renrem and 2 bfind 我决定创建一些方便的函数来处理regex in c questions tag
  • React/MUI Popover 使用anchorPosition 定位不正确

    我在 a 中使用 React MUI Popover反应窗口 https github com bvaughn react window列表元素并且无法使 Popover 正确定位 它总是出现在窗口的左上角 该组件无法在锚元素上执行 get
  • dojox.grid.DataGrid自定义排序方法?

    我有一个 dojox grid DataGrid 其中一列包含日期数据 例如 09 01 00 18 10 2010 09 03 00 18 10 2010 09 02 00 19 10 2010 当我单击标题并对列进行排序时 我得到了 0
  • 移植 AT&T inline-asm inb / outb 包装器以与 gcc -masm=intel 一起使用

    我目前正在开发 x86 操作系统 我尝试实现 inb 函数here https wiki osdev org Inline Assembly Examples它给了我Error Operand type mismatch for in 这也
  • 使用 Oracle 客户端和 Kerberos 与 Python 连接到数据库

    我有一个 python 脚本 它基本上使用x Oracleoracle 客户端连接到我的数据库服务器 连接后我可以运行 SQL 查询 现在 由于我的数据库凭据已过期 我被迫使用我不知道的 kerberos 身份验证 以前只需执行以下代码即可
  • Redis:可能使数组或排序集中的元素过期吗?

    目前是否只能使整个键 值对过期 如果我想将值添加到列表类型结构并让它们在插入后 1 小时自动删除 该怎么办 目前是否可行 或者是否需要运行 cron 作业来手动进行清除 有一个通用模式可以很好地解决这个问题 使用排序集 并使用时间戳作为分数
  • 取消透视从另一个表中获取的列

    我有超过 500 个列需要在取消透视时使用 select col1 col2 col3 from select from table unpivot col3 for col2 in value value2 value788 因此 我没有
  • Conv1D 层 Keras 的 input_shape

    我正在尝试制作一个用于非图像数据集二元分类的 CNN 模型 我的模型 代码正在运行并产生非常好的结果 准确性很高 但我无法理解input shape第一层参数Conv1D X 或输入的形状 此处x train df 为 2000 28 它有
  • 如何为 Nexus5 和 Nexus 5x 设置正确的边距

    我正在开发该应用程序 现在遇到了很大的问题 据我们所知 nexus 5 和 nexus 5x 使用相同的资源目录 xxhdpi 我的观点由于一些空白而被打破 即我必须为 nexus 5 设置 40dp 为 nexus5x 设置 65dp 那
  • 如何在 Eclipse PDE 中表达项目间依赖关系

    我正在寻找处理混合项目类型之间项目间依赖关系的最佳实践 其中一些项目是 eclipse 插件 OSGI 捆绑项目 RCP 应用程序 而其他项目只是普通的旧 java 项目 Web 服务模块 很少有 Eclipse 插件依赖于 Java 项目
  • Bootstrap 中占位符颜色变化

    如何更改 Bootstrap 中的占位符颜色 我尝试过以下代码 但不起作用 input webkit input placeholder color red input moz placeholder color red form cont
  • 异步 HttpHandler 和 WriteAsync

    我一直在 Ayende Rahien 的博客上尝试一些代码here http ayende com blog 72705 node cs它演示了使用异步 HttpHandler 来提高可以并发处理的请求数量 不幸的是我什至可以让基本的例子工
  • mapreduce 复合关键示例 - 未显示所需的输出

    作为mapreduce和hadoop世界的新手 在尝试了基本的mapreduce程序之后 我想尝试compositekey示例代码 输入数据集如下 国家 州 县 百万人口 美国 加利福尼亚州 阿拉米达 100 美国 加利福尼亚州 洛杉矶 2
  • 使用 List 类型的私有变量帮助 Java 中的抽象类

    自从我上次用 Java 编写代码以来已经有两年了 所以我的编码技能有点生疏了 我需要将数据 用户配置文件 保存在不同的数据结构中 ArrayList and LinkedList 并且他们都来自List 我希望尽可能避免代码重复 并且我还希
  • RabbitMQ 数据库文件

    我正在运行 RabbitMQ V 2 0 0 在 Linux 机器上 mnesia 库默认是当前的 但 Rabbit 在该目录中创建目录 例如 电子邮件受保护 cdn cgi l email protection 目录名称中的ip基于机器的
  • time.perf_counter() 或 time.process_time() 用于性能测量?

    我了解 time perf counter 测量经过的总时间 即使进程当前未运行 然而 time process time 仅测量进程实际运行的时间 如果我只是衡量一个功能的性能 这两个中哪一个是首选 由于我实际上对 CPU 花在处理其他进
  • 使用 python 的 eval() 与 ast.literal_eval()

    我遇到一些代码的情况eval 提出了一个可能的解决方案 现在我从来没有使用过eval 但在此之前 我已经了解到很多有关它可能造成的潜在危险的信息 也就是说 我对使用它非常谨慎 我的情况是我有用户提供的输入 datamap input Pro