如何从 yml 文件中获取数据,然后 return 作为字典
How to get data from a yml file, to then return as a dictionary
我有一个 python 函数可以打开 YAML 文件并读取数据。 YAML 文件包含两个 api 键和一个域。我想 return 字典中的每个值,以便它可以在程序中使用。但是我收到错误
"list indices must be integers, not str".
我是否应该将变量设为全局变量,这样它就不必 return 任何东西?
密码是:
def ImportConfig():
with open("config.yml", 'r') as ymlfile:
config = yaml.load(ymlfile)
darksky_api = config['darksky']['api_key']
gmaps_api = ['gmaps']['api_key']
gmaps_domain = ['gmaps']['domain']
return {'darksky_api_key': darksky_api, 'gmaps_api_key': gmaps_api, 'gmaps_domain': gmaps_domain }
列表索引必须是整数是什么意思?我以为大括号表示字典?还有更好的方法吗?
独立于您的 yaml 文件,如果您在 Python 的提示中键入 ['xy']
,您将创建一个包含一个元素的列表,然后如果您使用另一个字符串对其进行索引:
['xy']['abc']
你会得到那个错误。
您的程序第 5 行和第 6 行缺少 config
:
def ImportConfig():
with open("config.yml", 'r') as ymlfile:
config = yaml.safe_load(ymlfile)
darksky_api = config['darksky']['api_key']
gmaps_api = config['gmaps']['api_key']
gmaps_domain = config['gmaps']['domain']
return {'darksky_api_key': darksky_api, 'gmaps_api_key': gmaps_api, 'gmaps_domain': gmaps_domain }
请注意,在 PyYAML 中使用 load
存在安全风险,对于您的数据,您应该使用 safe_load()
.
我有一个 python 函数可以打开 YAML 文件并读取数据。 YAML 文件包含两个 api 键和一个域。我想 return 字典中的每个值,以便它可以在程序中使用。但是我收到错误
"list indices must be integers, not str".
我是否应该将变量设为全局变量,这样它就不必 return 任何东西?
密码是:
def ImportConfig():
with open("config.yml", 'r') as ymlfile:
config = yaml.load(ymlfile)
darksky_api = config['darksky']['api_key']
gmaps_api = ['gmaps']['api_key']
gmaps_domain = ['gmaps']['domain']
return {'darksky_api_key': darksky_api, 'gmaps_api_key': gmaps_api, 'gmaps_domain': gmaps_domain }
列表索引必须是整数是什么意思?我以为大括号表示字典?还有更好的方法吗?
独立于您的 yaml 文件,如果您在 Python 的提示中键入 ['xy']
,您将创建一个包含一个元素的列表,然后如果您使用另一个字符串对其进行索引:
['xy']['abc']
你会得到那个错误。
您的程序第 5 行和第 6 行缺少 config
:
def ImportConfig():
with open("config.yml", 'r') as ymlfile:
config = yaml.safe_load(ymlfile)
darksky_api = config['darksky']['api_key']
gmaps_api = config['gmaps']['api_key']
gmaps_domain = config['gmaps']['domain']
return {'darksky_api_key': darksky_api, 'gmaps_api_key': gmaps_api, 'gmaps_domain': gmaps_domain }
请注意,在 PyYAML 中使用 load
存在安全风险,对于您的数据,您应该使用 safe_load()
.