大家!
我确实需要从与 main.py 文件位于同一文件夹中的 json 文件中获取内容。问题是:Google Cloud Function无法运行open()
语句。出现以下错误:
没有这样的文件或目录:">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 所提到的,当您部署函数时,目录中的所有文件都将上传到函数的工作区。您如何部署函数?
对于这个复制品,我使用了Cloud Shell。在那里,我创建了一个名为 ReadJson 的目录,其中包含两个文件:main.py 和 myfile.json。
在云外壳上,在 ReadJson 目录中,我执行了这个 gcloud 命令:
gCloud Functions deploy 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']