Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何从OpenWhisk操作中读取文件_Python 3.x_Io_Openwhisk - Fatal编程技术网

Python 3.x 如何从OpenWhisk操作中读取文件

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操作中访问文件吗?问题是对文件的相对引用将不起作用,因为源代码的运行方向/操作与内部运行时不同。通过不使用相对路径引用

我正在用Python 3编写一个OpenWhisk操作,它需要读取一个本地文件。似乎一旦我用这个python文件创建了一个OpenWhisk操作并调用它,python操作就不能再读取这个本地文件了。本地文件与python文件位于同一目录中。日志上写着 stderr:IOError:[Errno 2]没有这样的文件或目录:'./localFile'


有人知道如何从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文件夹。我将研究你的建议。非常感谢。