我在Python 3中编写OpenWhisk操作,需要读取本地文件。似乎一旦我用这个python文件创建一个OpenWhisk动作并调用它,python动作就不能再读取这个本地文件了。本地文件位于与python文件相同的目录中。日志读取 stderr:IOError:[Errno 2]没有这样的文件或目录:' ./ localFile'
是否有人知道如何从OpenWhisk操作中访问文件?
答案 0 :(得分:1)
问题是对文件的相对引用不起作用,因为与内部运行时相比,源代码从不同的方向(/action
)运行。这可以通过不使用相对路径引用文件(例如./
)以蛮力方式解决。
例如,这可行 - 但不理想:
$ cat __main__.py
def main(args):
f = open('/action/workfile', 'r')
return {'file': f.read()}
$ echo "hello" > workfile
$ zip p.zip __main__.py workfile
$ wsk action update p p.zip --kind python:3
ok: updated action p
$ wsk action invoke -br p
{
"file": "hello\n"
}