我想运行这行代码。它将在我的计算机上运行 PyMOL,$PATH 是一个变量,用于保存正在运行的程序的当前目录。
pdbpath = [mfilename('fullpath'), '1AKI.pdb']
setenv('PATH', pdbpath)
!//Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL $PATH
这不起作用; PyMOL
将运行,但将输入逐字记录为 $PATH,而不是 $PATH
设置的内容,因为 !在MATLAB中似乎是一个特殊的东西。如何在 MATLAB 中打开具有可自定义路径的程序?
编辑:另外,我如何处理路径中的空格?由于路径未知(这就是我首先编写此内容的原因),它可能具有“程序文件”,这对命令行输入不利。
最佳答案
您真的需要将 PATH
变量作为环境变量吗?通常,已经有一个,您现在可以覆盖......
如果没有,
pdbpath = ['"' fileparts(mfilename('fullpath')), '1AKI.pdb"']
system(['//Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL ' pdbpath]);
如果是,
setenv('PATH', ['"' fileparts(mfilename('fullpath')), '1AKI.pdb"']);
system(['//Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL ' getenv('PATH')]);
路径和文件名中的空格的处理方式与系统命令行相同(即与 MATLAB 无关)。我在 pdbpath 变量的定义中添加了引号,这在 Windows、Mac 和 *nix 上都应该可以解决问题。
另一种选择是转义所有空格 ('\'
),就像 Divakar 所做的那样,但这仅适用于 *nix 系统 AFAIK,和 仅适用于空格...路径上可能还有其他“不方便”的字符,你知道:)
关于MATLAB 使用!使用自定义路径运行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22396259/