有没有办法在Cloud Function中获取json文件内容?

时间:2020-01-30 18:04:54

标签: python google-cloud-platform google-cloud-functions google-cloud-storage google-cloud-source-repos

所有人!

我真的需要从与main.py文件相同的文件夹中的json文件获取内容。问题是: Google Cloud Function无法运行open()语句。出现以下错误:

没有这样的文件或目录:' mytest .json'

现在,我正在将文件上传到Cloud Storage中,但希望将其上传到Cloud Source中。 那么,如何从Cloud Source获取我的json文件内容?

这是我在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 :(得分:0)

我尝试复制您的问题,但无法收到您的错误。如Doug所述,在部署功能时,目录中的所有文件都将上载到功能的工作区。您如何部署功能?

为了进行复制,我使用了Cloud Shell。在其中,我创建了一个名为ReadJson的目录,其中包含两个文件:main.py和myfile.json。

在云外壳上的ReadJson目录中,我执行了以下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']