Ошибка значения: операция ввода-вывода в закрытом файле

#python #api #csv

#python #API #csv

Вопрос:

  import requests
    import csv
    
    url = "https://paneledgesandbox.//API/v3/surveys/id/import-responses"
    
    with open('Cars.csv', 'r') as file:
        payload = csv.reader(file)
        print(payload)
    headers = {
      'X-API-TOKEN': 'zzzz',
      'Content-Type': 'text/csv',
      'Cookie': 'CPSessID=bb5b5cf55ceff2c2b8237810db3ca3a7; XSRF-TOKEN=XSRF_0wG1WMbV3G0ktBb'
    }

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)`
 

Я получаю сообщение об ошибке при попытке прочитать csv-файл в post-вызове с использованием python.

Я не уверен, в чем именно проблема, учитывая, что с помощью команды with файл автоматически закрывается.

Комментарии:

1. Что вы пытаетесь сделать?

Ответ №1:

В

 payload = csv.reader(file)
 

на самом деле вы не читаете свой csv, а скорее возвращаете генератор, который исчерпывается после закрытия файла, когда вы выходите из области with видимости.

Вместо этого вам нужно прочитать данные

 payload = "n".join([", ".join(line) for line in csv.reader(file)])
 

Комментарии:

1. Но полезная нагрузка должна оставаться после закрытия файла, нет?

2. Считыватель не может получить доступ к файлу после его закрытия.