python - 从 matlab 运行 python 脚本不起作用,但从终端运行正常

标签 python matlab system

我有一个 python 脚本,比如 script.py,我可以从终端调用它,没有问题,在脚本中间,它使用 os.system('unar file') 取消归档文件。但是,当尝试使用 system('python script.py') 从 matlab 运行此脚本时,它会运行,但当它到达 unar 行时,它会显示“sh:unar: command not find” ”。

这怎么可能? matlab系统命令不是应该与终端相同吗?任何帮助表示赞赏。

最佳答案

在您的终端中,您的 python 脚本受益于您的 PATH 环境,因此它知道 /usr/bin/unar 应用程序所在的位置。在 Matlab 中,则不然。您需要为 os.system 调用提供应用程序和文件的完整路径。

此外,os.system 非常糟糕。请改用 subprocess.Popen,它允许重定向 sys.stdinsys.stdout

这是使用子进程的要点示例:https://gist.github.com/voodoonofx/8e5bcae8e0b0c5741148

关于python - 从 matlab 运行 python 脚本不起作用,但从终端运行正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26558827/

相关文章:

operating-system - 未经正式验证,可以在ring0中运行的应用程序安全吗?

android - 如何检查系统更新是否可用

java - 为什么我不能将 JAVA_HOME 和 JRE_HOME 设置为其他值?

c# - NUnit 无法找到程序集,但控制台应用程序可以

matlab - 在matlab中查找所有对函数的调用

python - 更改Python中列表的起始索引?

python - 查找数据框中每一列的平均值,按列分组,不包括一个值

python - MATLAB 多维矩阵到 NumPy 矩阵的转换

python - Scikit学习: TypeError: float() argument must be a string or a number,而不是 'Bunch'

python - 在 numpy 数组中找到局部最大梯度值的快速方法?