从Matlab运行Python脚本失败,但从终端正常运行
我有一个Python脚本,叫做script.py,我可以在终端里顺利运行它。在脚本中间,它用 os.system('unar file')
来解压一个文件。但是,当我试着从Matlab里运行这个脚本,使用 system('python script.py')
,它确实能运行,但当执行到解压那一行时,就出现了“sh: unar: 找不到命令”的错误。
这怎么可能呢?难道Matlab的系统命令不应该和终端一样吗?希望能得到一些帮助。
1 个回答
2
在你的终端中,你的 Python 脚本可以使用你的 PATH
环境变量,这样它就知道 /usr/bin/unar
应用程序的位置。而在 Matlab 中,它就不知道这些信息了。因此,你需要在调用 os.system
时,提供应用程序和文件的完整路径。
另外,os.system
其实不太好用。建议使用 subprocess.Popen
,这样可以更方便地处理输入和输出。
这里有一个使用 subprocess
的示例: https://gist.github.com/voodoonofx/8e5bcae8e0b0c5741148