#python
#python
Вопрос:
Я относительно новичок в программировании за пределами сценариев bash, поэтому буду признателен за любые советы.
Я работаю над скриптом на Python для вызова Okta Group API, по сути, для создания списка групп через файл yaml.
Для этого я использую библиотеку запросов и for
цикл. Скрипт выполняет только последний элемент, который я передаю из файла yaml. Я неправильно использую цикл for?
#!/usr/bin/env python3
import requests
import yaml
url = "https://org.okta.com/api/v1/groups"
headers = {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization" : "SSWS AUTHKEY",
"User-Agent" : "Custom-Python-Agent"
}
with open(r'groups.yaml') as file:
documents = yaml.full_load(file)
for okta_groups in documents['profile']['groups']:
body = {'profile': {'name': okta_groups['name'], 'description': okta_groups['description']} }
r = requests.post(url, headers=headers, json=body)
print(r)
Файл YAML:
profile:
groups:
- name: aws#test#api#001
description: test description 1
- name: aws#test#api#002
description: test description 2
- name: aws#test#api#003
description: test description 3
Спасибо!
Комментарии:
1. Потому что вы обновляете «body» много раз и используете его только для выполнения 1 запроса в самом конце. Вы должны сделать отступ «r = requests …» и инструкцию print, чтобы они находились внутри цикла.
Ответ №1:
Просто сделайте отступ в этих:
r = requests.post(url, headers=headers, json=body)
print(r)
Чтобы быть внутри цикла:
for okta_groups in documents['profile']['groups']:
body = {'profile': {'name': okta_groups['name'], 'description': okta_groups['description']} }
r = requests.post(url, headers=headers, json=body)
print(r)
Таким образом, вы будете отправлять запрос для каждого экземпляра «body», а не только для последнего.