我有一个 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.stdin
和 sys.stdout
。
这是使用子进程
的要点示例:https://gist.github.com/voodoonofx/8e5bcae8e0b0c5741148
关于python - 从 matlab 运行 python 脚本不起作用,但从终端运行正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26558827/