Python 3.x 如何从OpenWhisk操作中读取文件
我正在用Python 3编写一个OpenWhisk操作,它需要读取一个本地文件。似乎一旦我用这个python文件创建了一个OpenWhisk操作并调用它,python操作就不能再读取这个本地文件了。本地文件与python文件位于同一目录中。日志上写着 stderr:IOError:[Errno 2]没有这样的文件或目录:'./localFile'Python 3.x 如何从OpenWhisk操作中读取文件,python-3.x,io,openwhisk,Python 3.x,Io,Openwhisk,我正在用Python 3编写一个OpenWhisk操作,它需要读取一个本地文件。似乎一旦我用这个python文件创建了一个OpenWhisk操作并调用它,python操作就不能再读取这个本地文件了。本地文件与python文件位于同一目录中。日志上写着 stderr:IOError:[Errno 2]没有这样的文件或目录:'./localFile' 有人知道如何从OpenWhisk操作中访问文件吗?问题是对文件的相对引用将不起作用,因为源代码的运行方向/操作与内部运行时不同。通过不使用相对路径引用
有人知道如何从OpenWhisk操作中访问文件吗?问题是对文件的相对引用将不起作用,因为源代码的运行方向/操作与内部运行时不同。通过不使用相对路径引用文件(例如./),可以通过暴力方式解决此问题 例如,这将起作用,但并不理想:
$ 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"
}
您能否提供一个创建操作的步骤示例。如果您使用IBM在Bluemix上提供的OpenWhisk,它还不支持python 3作为默认运行时。另一个问题是,您需要创建一个包含python脚本和您试图读取的文件的zip文件。这是开源版本OpenWhisk on github上支持的功能,bluemix.net上即将提供OpenWhisk on github。如果您现在想在bluemix.net的产品上支持此功能,您需要使用docker操作,这允许您使用任何语言、linux发行版、,如果它只是一个包含python模块和额外文件的zip文件,那么bluemix和开源master中已经支持它了。我怀疑这里的问题是脚本运行的目录与zip文件不同。这需要相当于_dirname的nodejs操作在本例中应为/action。此问题提供了针对运行时的修补程序,以允许相对路径按预期工作。似乎我没有/action文件夹。我将研究你的建议。非常感谢。