Есть ли способ получить содержимое файла json в облачной функции? - PullRequest
0 голосов
/ 30 января 2020

каждый!

Мне действительно нужно получить содержимое из файла json в той же папке, что и мой файл main.py. Проблема: Облачная функция Google не может запустить оператор open(). При появлении следующей ошибки:

Нет такого файла или каталога: ' mytest . json '

Теперь я загружаю свои файлы в облачное хранилище, но я sh загружаю в облачный источник. Итак, как я могу получить содержимое моего json файла из Cloud Source?

Это моя структура кода в Cloud Source:

.
├── main.py
└── requirements.txt
└── mytest.json

mytest. json

{
    'test': 'Hello World!'
}

main.py:

import json
with open('mytest.json', 'r') as testJson:
     testDict = json.loads(testJson.read())
     print(testDict['test'])

1 Ответ

0 голосов
/ 30 января 2020

Я пытался повторить вашу проблему и не смог получить вашу ошибку. Как упоминал Дуг, при развертывании вашей функции все файлы в каталоге загружаются в рабочее пространство функции. Как вы разворачиваете свою функцию?

Для этого воспроизведения я использовал Cloud Shell. Там я создал каталог с именем Read Json с двумя файлами: main.py и myfile. json.

В облачной оболочке в каталоге Read Json я выполнил это Команда gcloud:

Развертывание функций gcloud hello_world --runtime python37 --trigger-http

Используя приведенный ниже код, при запуске функции вы должны наблюдать «HelloWorld» в браузере.

def hello_world(request):
    """Responds to any HTTP request.
    Args:
        request (flask.Request): HTTP request object.
    Returns:
        The response text or any set of values that can be turned into a
        Response object using
        `make_response <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>`.
"""
    request_json = request.get_json()
    if request.args and 'message' in request.args:
        return request.args.get('message')
    elif request_json and 'message' in request_json:
        return request_json['message']
    else:
        with open('myfile.json') as json_file:
            data = json.load(json_file)
        return data['test']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...