【发布时间】:2018-02-21 18:20:41
【问题描述】:
我有一个结构如下的 yaml 文件:
User1:
email: test@test.com
firstname: test
lastname: user
id: AZTEST123
role: manager
team: test
我希望能够遍历这个 yaml 文件并使用我在下面编写的脚本中的值:
def get_users(yaml_file="test.yml"):
with open(yaml_file, 'r') as stream:
try:
data = yaml.load(stream)
print(data)
except yaml.YAMLError as exc:
print(exc)
return data
def create_user(users):
for user in users:
print(user[1])
try:
print(user['email'])
url = 'https://api.test.com/users'
payload = {
'user': {
'type': 'user',
'name': user['firstname'] + ' ' + user['lastname'],
'email': user['email'],
'role': user['role']
}
}
r = requests.post(url, headers=headers, data=json.dumps(payload))
print ('Status Code: {code}').format(code=r.status_code)
print (r.json())
sc.api_call(
"chat.postMessage",
channel="#test",
text="User {user} has been added to Test :tada:".format(user=user['firstname']),
user="test")
except requests.ConnectionError as error_message:
print (error_message)
users = get_users()
create_user(users)
当我从我的代码中打印收到的print(data) 时,它会返回:
{'User1': {'email': 'test@test.com', 'firstname': 'test', 'lastname': 'user', 'id': 'AZTEST123', 'role': 'manager', 'team': 'test'}}
但是当我尝试使用这些值时:user['firstname'] 我得到一个错误:
TypeError: string indices must be integers
当我print(user[0]) 它返回时:
U
我在这里遗漏了什么,如何遍历这些项目?
【问题讨论】:
标签: python-3.x data-structures yaml pyyaml