【发布时间】:2021-08-01 17:49:25
【问题描述】:
我正在尝试使用 Requests 从 GitHub 目录加载 .py 文件。 .py 文件的开头是这样的(我猜是字典?):
colors = {
"1234": {
"shade": [1, 2, 3]
}
}
我使用以下代码:
import requests
r = requests.get('https://raw.github.com/example/example1/master/scripts/colors.py')
我希望 r 是一个变量或字典,这样我就可以轻松地在里面查找一些特定的字符串。但是,当我打印 r 时,我没有得到 .py 文件,但也有 \r\n 等标志。如何正确读取此文件?
r.text
>>> 'colors = {\r\n\r\n "1234": {\r\n "shade": [1, 2, 3]}\r\n}\r\n'
最后我想创建一个字典,其中“阴影”我获得所有值。所以首先我需要在 r 中搜索“shade”这个词。
如果您有任何建议和解决方案,我将不胜感激。
【问题讨论】:
-
"我希望 r 成为一个变量" - 它是一个变量。 “但是,当我打印 r 时,我没有得到一个 .py 文件”——因为它是一个字符串,而不是一个文件。
-
ast.literal_eval(r.content)?您必须希望 repo 的所有者不会在该文件中插入恶意代码 -
不幸的是它给出了一个错误:>>> ast.literal_eval(r.content) Traceback(最近一次调用最后):文件“
”,第 1 行,在 文件“/ usr/lib/python3.9/ast.py",第 105 行,在 literal_eval 中返回 _convert(node_or_string) 文件 "/usr/lib/python3.9/ast.py",第 104 行,在 _convert 返回 _convert_signed_num(node) 文件“/usr/lib/python3.9/ast.py”,第 78 行,在 _convert_signed_num 返回 _convert_num(node) 文件“/usr/lib/python3.9/ast.py”,第 69 行,在 _convert_num _raise_malformed_node(node) -
文件“/usr/lib/python3.9/ast.py”,第 66 行,在 _raise_malformed_node 中引发 ValueError(f'malformed node or string: {node!r}') ValueError: malformed node或字符串:b'colors = {\r\n\r\n "1234": {\r\n "shade": [1, 2, 3],
标签: python python-3.x string python-requests