Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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
Can';t通过命令行参数将数据从octave传递到python_Python_Subprocess_Octave - Fatal编程技术网

Can';t通过命令行参数将数据从octave传递到python

Can';t通过命令行参数将数据从octave传递到python,python,subprocess,octave,Python,Subprocess,Octave,我在八度音阶中计算HoG特征描述符,然后我尝试使用scikit-learn在Python中对这些数据进行聚类。 为了在Python中测试我的代码,我尝试将4000x2的数据传递给Python。 我使用 system('python filename.py data') 然后尝试使用 sys.argv 但是我得到的第二个参数是字符串'data',而不是从倍频程传递的4000x2数据 我应该怎么做才能在Python中获得原始数据,而不仅仅是字符串“数据”我不是八度音阶方面的专家,但答案很可能是这样的

我在八度音阶中计算HoG特征描述符,然后我尝试使用scikit-learnPython中对这些数据进行聚类。 为了在Python中测试我的代码,我尝试将4000x2的数据传递给Python。 我使用

system('python filename.py data')

然后尝试使用

sys.argv

但是我得到的第二个参数是字符串'data',而不是从倍频程传递的4000x2数据


我应该怎么做才能在Python中获得原始数据,而不仅仅是字符串“数据”我不是八度音阶方面的专家,但答案很可能是这样的:

command=sprintf("python filename.py %s",data)
system(command)

请注意,在大多数操作系统中,命令行参数的数量是有限的。

octave中内置了一个
python
命令。 或者,我将另存为
.mat
文件,并使用
scipy.io.loadmat
在python脚本中打开它


还有和,但我不确定这是否适合您的特定用例。最通用、与matlab兼容且推荐的方法是
.mat
方法。

我不知道倍频程,但可能是因为您使用单引号
'python filename.py data'
系统函数将其作为字符串。我不知道你可以传递给系统,比如<代码>系统(‘Python FielMe.Py’+数据)< /Cord>你需要告诉<代码>系统<代码> > <代码>数据>代码>是一个变量,而不是一个字符串。你也可以考虑把你的数据写成一个文件,像你的八度音阶脚本一样的CSV格式。然后从您的python脚本中访问它。@fvidalmolina您所说的方法不起作用,因为python试图将数据作为字符串连接到字符串“python filename.py”@voidpointer cast您的方法起作用。写入csv文件,然后通过导入pandas读取,完成了这项工作。我尝试使用
sys.argv
获取参数,并尝试使用您建议的方法在python中打印数据。但它只是将字符串“python filename.py”作为列表多次打印,如
['filename.py'、'python'、'filename.py'、'python'、'filename.py'、'python'、'filename.py']
将命令打印到控制台时,octave显示了什么?您能提供python脚本的主要部分吗?写入
.mat
文件并阅读
scipy.io.loadmat
工作,但我不了解
python
命令的工作原理。我正在使用这段代码
python('filename.py',data)
,但是我得到了一个错误
错误:python:invalid arguments错误:从python第48行第5列调用
,据我所知,
python
命令的工作方式就像您从终端调用了
python arg1 arg2 arg4等。因此,您的参数需要是字符串,您可以从python脚本内部适当地处理它们,就像从终端调用python脚本一样。最好坚持使用
.mat
文件。python和octave(例如oct2py)之间的通信接口使用引擎盖下的套接字来实现字节数据传输。