有没有办法在 Cloud Function 中获取 json 文件内容?
Is there a way to get a json file content in the Cloud Function?
各位!
我确实需要从与 main.py 文件位于同一文件夹中的 json 文件中获取内容。问题是:Google Cloud Function can't 运行 the open()
statement. 出现如下错误:
没有这样的文件或目录:'mytest.json'
现在,我正在将我的文件上传到云存储中,但我希望它在云源中。 那么,如何从云源获取我的 json 文件内容?
这是我在云源中的代码结构:
.
├── 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'])
我已尝试重现您的问题,但未能发现您的错误。正如 Doug 所提到的,当您部署函数时,目录中的所有文件都会上传到函数的工作区。你如何部署你的功能?
对于此复制,我使用了云 Shell。我在那里创建了一个名为 ReadJson 的目录,其中包含两个文件:main.py 和 myfile.json.
在云端 shell,在 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']
各位!
我确实需要从与 main.py 文件位于同一文件夹中的 json 文件中获取内容。问题是:Google Cloud Function can't 运行 the open()
statement. 出现如下错误:
没有这样的文件或目录:'mytest.json'
现在,我正在将我的文件上传到云存储中,但我希望它在云源中。 那么,如何从云源获取我的 json 文件内容?
这是我在云源中的代码结构:
.
├── 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'])
我已尝试重现您的问题,但未能发现您的错误。正如 Doug 所提到的,当您部署函数时,目录中的所有文件都会上传到函数的工作区。你如何部署你的功能?
对于此复制,我使用了云 Shell。我在那里创建了一个名为 ReadJson 的目录,其中包含两个文件:main.py 和 myfile.json.
在云端 shell,在 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']