У меня есть два файла, содержащие информацию, которую мне нужно ввести в одном и том же скрипте. Один содержит идентификаторы, один в каждой строке, а другой список содержит параметры в своих отдельных строках. Следует отметить, что этот список содержит более 4000 строк каждая. Другие вызовы API были успешными, но с этим немного сложнее разобраться.
Способ, которым это должно работать, заключается в том, что скрипт читает строку 1 из файла идентификатора, вставляя этот идентификатор, где% s находится в URL. Это завершит URL, необходимый для вызова API. Затем мне нужны параметры, которые находятся в тех же строках, соответствующих их соответствующим идентификаторам сети, в файле идентификаторов, помещенном в% s в разделе полезной нагрузки.
Я понял это, и сейчас происходит то, когда идентификатор выбирается в списке идентификаторов, URL завершается и делает то, что должен. Однако, когда сценарий начинает чтение файла содержимого, он повторяется снова и снова, пока все параметры для ВСЕХ сетей не будут завершены, и это будет применено только к той одной сети, что не должно происходить, затем он перемещается к следующему идентификатору сети и делает то же самое.
Я опубликовал образец визуального материала, чтобы дать вам представление о том, что получается. Я знаю, что должен быть способ, чтобы они читали по одной строке за раз, запускали скрипт и перебирали следующую строку последовательно, и делали это до тех пор, пока оба полных списка не будут завершены.
Питон не моя сильная сторона, поэтому любая помощь очень ценится.
Файлы в формате .txt и правильно отформатированы. Эти данные были проверены с использованием почтальона и были успешны в других наших вызовах API, поэтому мы можем устранить пару факторов.
with open('TZ.txt') as file1, open ('TZContents.txt') as file2:
array1 = file1.readlines()
file = file2.readlines()
for line in array1:
url = 'https://dashboard.meraki.com/api/v0/networks/%s' %line.rstrip("\n")
for line2 in file:
payload = '%s' % line2.rstrip("\n")
headers = {'X-Cisco-Meraki-API-Key': 'API Key','Content-Type': "application/json"}
response = requests.request('PUT', url, headers = headers, data = payload, allow_redirects=True, timeout = 10)
print(response.text)
Пример вывода ниже:
{"id":"1111", "type":"wireless","name":"Network A}
{"id":"1111", "type":"wireless","name":"Network B}
{"id":"1111", "type":"wireless","name":"Network C}
{"errors":["Name has already been taken"]}
{"errors":["Name has already been taken"]}
{"errors":["Name has already been taken"]}
{"errors":["Name has already been taken"]}
{"errors":["Name has already been taken"]}
{"id":"2222", "type":"appliance","name":"Network A}
{"id":"2222", "type":"appliance","name":"Network B}
{"id":"2222", "type":"appliance","name":"Network C}
Должно быть так:
{"id":"1111", "type":"wireless","name":"Network A}
{"id":"2222", "type":"appliance","name":"Network B}
{"id":"3333", "type":"combined","name":"Network C}