Вернуть данные csv как результат для IBM Cloud Function

У меня есть функция, написанная на Python для облака IBM. Которые возвращают результаты как json для следующих словарей python:

return {"billing_for_org": output1, "billing_for_org2:": output2}

Есть ли способ вернуть эти данные в виде файла CSV? Итак, когда я вызываю api, я могу загрузить данные в виде файла CSV?


person NoviceMe    schedule 24.12.2018    source источник


Ответы (1)


Вот образец, который я тестировал. Дайте мне знать, если это то, что вы ищете.

import sys
import csv
import io

def main(dict):
  output = io.StringIO()
  my_dict = {"billing_for_org": "$100", "billing_for_org2": "$200"}
  w = csv.DictWriter(output, my_dict.keys())
  w.writeheader()
  w.writerow(my_dict)
  return {"body": output.getvalue(), 
  "headers": {'Content-Type': 'text/csv','Content-Disposition':'attachment;filename=myfilename.csv'}}

Я не уверен, как вы вызываете функцию как Rest API или Web Action.

Я протестировал приведенный выше код как функцию веб-действия и получил результат. Обратите внимание, что расширение говорит http в конце URL-адреса, что заставляет функцию возвращать полезные данные, отличные от значений по умолчанию (Json).

Пример URL - https://openwhisk.ng.bluemix.net/api/v1/web/demo_dev/hello-world/helloworld.http.

Получен ответ -

Тело:

billing_for_org, billing_for_org2

$100,$200

Заголовки:

Content-Type → text / csv; charset = UTF-8 Content-Length → 45 Connection → keep-alive Content-Disposition → вложение; filename = myfilename.csv

Ссылка - https://console.bluemix.net/docs/openwhisk/openwhisk_webactions.html#openwhisk_webactions. https://developer.ibm.com/answers/answers/406943/view.html

person Imran    schedule 25.12.2018
comment
Когда я запускаю указанный выше код как веб-действие, я не скачиваю никаких файлов? Я просто вижу это как результат: {body: billing_for_org, billing_for_org2 \ r \ n $ 100, $ 200 \ r \ n, заголовки: {Content-Disposition: attachment; filename = myfilename.csv, Content-Type: text / csv}} - person NoviceMe; 25.12.2018
comment
URL-адрес должен заканчиваться на .http после имени функции. Вы используете расширение .json? - person Imran; 25.12.2018