Цикл Python, который записывает файлы из запросов с переходом по списку - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь написать цикл, который получает .json из URL через запросы, а затем записывает .json в файл .csv.Затем мне нужно это снова и снова, пока мой список имен (файл .txt) не будет закончен (89 строк).Я не могу заставить его пройтись по списку, он просто выбирает нижнее имя моего списка и затем завершает работу.Мне нужно, чтобы пройти и в основном создать 89 файлов с исправленными URL.Другие функции работают должным образом, но это происходит только один раз.

Кажется, я не могу найти подходящую петлю для своих целей.Так как я абсолютный новичок в Python, я надеюсь, что смогу получить некоторую помощь здесь и узнать больше

Мой код

#Opens the file with pricelists

with open('prislistor.txt', 'r') as f:
    for i, line in enumerate(f):
        pricelists = (line.strip())

response = requests.get('https://api.example.com/3/prices/sublist/{}/'.format(pricelists), headers=headers)

#Formats it
parsed = json.loads(response.text)

listan=(json.dumps(parsed, indent=4, sort_keys=True))

#Converts and creates a .csv file.
data = parsed['Prices']

with open('listan-{}.csv'.format(pricelists), 'w') as outf:
    dw = csv.DictWriter(outf, data[0].keys())
    dw.writeheader()

    for row in data:
        dw.writerow(row)

print ("The file list-{}.csv is created!".format(pricelists))

1 Ответ

1 голос
/ 06 апреля 2019

Python использует отступ (пробелы, табуляции), чтобы пометить блок кода, вам нужно поместить свою логику зацикливания ВНУТРИ блока цикла

#Opens the file with pricelists

with open('prislistor.txt', 'r') as f:
    for i, line in enumerate(f): # from here on, a looping code block start with 8 spaces
        pricelists = (line.strip())
        # Keeps the indents
        response = requests.get('https://api.example.com/3/prices/sublist/{}/'.format(pricelists), headers=headers)

        #Formats it
        parsed = json.loads(response.text)

        listan=(json.dumps(parsed, indent=4, sort_keys=True))

        #Converts and creates a .csv file.
        data = parsed['Prices']

        with open('listan-{}.csv'.format(pricelists), 'w') as outf:
            dw = csv.DictWriter(outf, data[0].keys())
            dw.writeheader()

            for row in data:
                dw.writerow(row)

        print ("The file list-{}.csv is created!".format(pricelists))

    # codes here is outside the loop but still INSIDE the 'with' block, so you can still access f here

# codes here leaves all blocks 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...