我编写代码来加载大量项目数据。我想在代码中保存我的路径名相对于该项目在磁盘上的某个位置,即没有配置或硬编码。
matlab中有没有这样的功能?
在python中我会写:
ROOT = os.path.dirname('__file__')
答案 0 :(得分:4)
执行此操作的最佳方法是将fileparts
与mfilename('fullpath')
合并。 (所有示例都假设包含这些语句的执行m文件位于/home/suever/code/stackoverflow.m
)
mfiledir = fileparts(mfilename('fullpath'));
/home/suever/code
然后,您可以使用fullfile
构建所需的任何路径。现在,如果您有一个文件(data.mat
)存储在同一目录中:
filename = fullfile(mfiledir, 'data.mat');
/home/suever/code/data.mat
如果文件实际上在父目录中。
filename = fullfile(mfiledir, '..', 'data.mat');
/home/suever/data.mat
如果您希望只是 m文件所在的父目录,您可以应用fileparts
两次,只保留第二个输出。
[~, reldir] = fileparts(fileparts(mfilename('fullpath')));
code
我建议在第一个示例中使用完整路径,因为它们完全独立于用户的当前工作目录。
答案 1 :(得分:0)
组织代码的更好方法是使用这样的函数:
function [ path ] = get_path()
path = [regexprep(mfilename('fullpath'), ['\' filesep '[\w\.]*$'],'') filesep];
end
将其放在+foo/get_path.m
文件中,然后调用类似foo.get_path()
的内容,返回+foo
文件夹的路径。