Python中文
首页
教程
问答
标签
搜索
登录
注册
为什么在这个代码段中需要eval()?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我目前正在用python开发一个小项目,使用一个名为“pybtsync”的API层,它为BTSync提供了直接的python访问。我试图通过查看它的源代码来熟悉它,我发现:</p> <pre><code>def _request_function(self, method_name, arguments='', key=None): URL = 'http://' + self._address + ':' + self._port +'/api?method=' + method_name + '&' + arguments request = requests.get(URL, auth=(self._login, self._password)) request_data = eval(request.text) if key is not None: return request_data[key] return request_data </code></pre> <p>我知道BTsync的API以json格式返回。那为什么不是json.load文件(请求.text)不够?我发现在这里使用eval()有一个潜在的安全问题。有什么理由我不明白吗?你知道吗</p> <p>pybtsync的全部代码可以在这里找到: <a href="https://github.com/tiagomacarios/pybtsync/blob/master/pybtsync/pybtsync.py#L239" rel="nofollow">https://github.com/tiagomacarios/pybtsync/blob/master/pybtsync/pybtsync.py#L239</a></p> <p>有关BTSync api的更多上下文: <a href="http://www.bittorrent.com/sync/developers/api" rel="nofollow">http://www.bittorrent.com/sync/developers/api</a></p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>解释语言中的eval是指在目标文本上调用解释器本身,即试图将文本作为程序进行解析和执行。你知道吗</p> <p>在您的例子中,结果是json格式的“string”,而不是json对象,对其调用eval将解析字符串,从而为您提供一个对象,json.load文件将返回unicode字符串,而eval不会</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
1 回答
如何添加表示整数的擦边字符串?
8 回答
如何添加要在Bokeh中使用的新font.ttf文件?
1 回答
如何添加要显示的矩阵XY轴编号和XY轴
4 回答
如何添加计数?
5 回答
如何添加计数器函数?
3 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
6 回答
如何添加计数器来跟踪while循环中的月份和年份?
10 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
3 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
8 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
1 回答
如何添加评论拉梅尔亚姆
10 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
10 回答
如何添加谷歌地点自动完成到Flask?
4 回答
如何添加超时、python discord bot
10 回答
如何添加超过1dp的检查
8 回答
如何添加距离方法
7 回答
如何添加跟随游戏的敌人精灵
1 回答
如何添加路径以便python可以找到程序?
4 回答
如何添加身份验证/安全性以使用happybase访问HBase?
5 回答