Yaml 文件解析迭代值
Yaml file parsing iterating values
我有一个具有以下结构的 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)
时 returns:
{'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])
它 returns:
U
我在这里遗漏了什么,我如何遍历这些项目?
for
循环,遍历字典,返回键。所以 user
将具有值 User1
.
您想做的是:
for username in users:
user = users[username]
print(user['firstname'])
我有一个具有以下结构的 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)
时 returns:
{'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])
它 returns:
U
我在这里遗漏了什么,我如何遍历这些项目?
for
循环,遍历字典,返回键。所以 user
将具有值 User1
.
您想做的是:
for username in users:
user = users[username]
print(user['firstname'])