Автоматизация загрузки файлов в CKAN - PullRequest
0 голосов
/ 06 марта 2020

Я хотел бы автоматически загрузить файлы в CKAN, используя Python3. Следующее от https://docs.ckan.org/en/latest/maintaining/filestore.html#filestore -api

Создайте новый ресурс и загрузите в него файл, используя запросы к библиотеке Python:

import requests
requests.post('http://0.0.0.0:5000/api/action/resource_create',
              data={"package_id":"my_dataset"},
              headers={"X-CKAN-API-Key": "21a47217-6d7b-49c5-88f9-72ebd5a4d4bb"},
              files=[('upload', file('/path/to/file/to/upload.csv'))])

Я бы нравится достигать этого, используя Python 3. (ключевое слово file не существует в Python 3). Вам нужно использовать IP-адрес сервера? Я хотел бы использовать обычный URL.

Обновление

Спасибо за вашу ссылку на страницу запроса. Мой код выглядит так:

 import requests
    url = 'https://data.gov.au/api/3/action/resource_create'
    data={'package_id':'my_dataset'}
    files = ['upload',{'file': ('c:\python\xxopendata.xlsx', open('c:\python\xxopendata.xlsx', 'rb'))}]
    headers={'Authorization': '6cb2400e-9833-4946-9928-8c84cc451168'}
    r = requests.post(url, data=data,headers=headers,files=files)
    r.text
    print(r.text)

Когда я запускаю это, я получаю «слишком много значений для распаковки»

1 Ответ

0 голосов
/ 06 марта 2020

В приведенном вами примере используется библиотека запросов, которая работает с Python3 и не связана с CKAN, поскольку вы используете CKAN API для выполнения HTTP-вызова. Пожалуйста, проверьте библиотеку запросов и как вы можете отправить файл https://requests.readthedocs.io/en/master/user/quickstart/#post -a-multipart-encoded-file . Ошибка, которую вы получаете, заключается в том, что в последней версии файл переименовывается в файлы для загрузки файла, состоящего из нескольких частей.

...