如何在GNU Octave中获取当前脚本路径及脚本所在目录路径?
嘿,这个问题在GNU Octave的日常使用中挺常见的,我来给你拆解两种需求的实现方法,保证实用且不受当前工作目录的影响:
获取当前脚本的完整路径
Octave内置了mfilename函数,专门用来获取当前运行的脚本/函数的名称或路径。如果要拿到完整路径,只需要给它传'fullpath'参数就行。
举个实际例子,假设你有个脚本my_script.m,在里面写:
% 获取当前脚本的完整路径 current_script_path = mfilename('fullpath'); disp("当前脚本的完整路径:"); disp(current_script_path);
不管你在哪个目录下通过octave my_script.m运行它,这个函数都会返回脚本本身的绝对完整路径,完全不受当前工作目录的干扰。
获取脚本所在目录的路径
如果只需要脚本所在的目录,我们可以在上面的基础上,用fileparts函数拆分完整路径。这个函数会把一个完整路径拆分成目录路径、文件名和扩展名三个部分,我们只需要取第一部分就行。
同样在my_script.m里写:
% 先拿到脚本完整路径 script_full_path = mfilename('fullpath'); % 拆分路径,忽略文件名和扩展名 [script_dir, ~, ~] = fileparts(script_full_path); disp("脚本所在的目录:"); disp(script_dir);
这里的~是Octave里用来忽略不需要的返回值的语法,这样得到的script_dir就是脚本所在的绝对目录路径,不管你当前工作目录怎么变,结果都不会出错。
⚠️ 小提醒:mfilename函数只有在**脚本文件(.m文件)**里运行才会返回正确的路径,如果是在Octave的交互式命令行里直接调用,它会返回'octave'或者空值,这点要注意哦。
内容的提问来源于stack exchange,提问作者MayeulC
相关产品推荐
相关产品推荐

