在HPC上运行MATLAB脚本时创建文件名遇字符串错误求助
问题:MATLAB保存文件时因变量含不可见空白字符导致路径错误
问题场景
我在HPC上运行MATLAB脚本,用以下代码生成变量保存路径:
fname = char(['~/Documents/MATLAB/PROCESSING/', strtrim(participant), '/', strtrim(participant),strtrim(task), 'PRO.mat']);
执行时触发错误,提示找不到对应文件夹,错误信息如下:
Error using save Cannot create ' HC_s02 resting PRO.mat ' because '/home/eb857/Documents/MATLAB/PROCESSING/HC_s02 ' does not exist. Error in LUMO_finalPipeline (line 163) save(fname, 'dat', '-v7.3');
我尝试用strrep去除空格,但问题依旧:
participant = strrep(participant, ' ', ''); task = strrep(task, ' ', '');
解决方案
从错误信息看,participant变量中的空白不只是普通空格,大概率包含换行符(\n)、制表符(\t)这类不可见空白字符,strrep仅替换空格无法处理这些。可以通过以下方法彻底解决:
用正则表达式清理所有空白类字符
正则表达式\s会匹配所有Unicode空白字符(包括空格、换行、制表符等),一次性清理干净:participant = regexprep(participant, '\s', ''); task = regexprep(task, '\s', '');验证清理结果
处理后可以打印变量和路径,确认没有残留空白:disp(['清理后的participant: ', participant]); disp(['清理后的task: ', task]); disp(['生成的路径: ', fname]);提前创建目标文件夹
为避免因文件夹不存在导致报错,保存前先检查并创建路径:folderPath = fileparts(fname); if ~exist(folderPath, 'dir') mkdir(folderPath); end save(fname, 'dat', '-v7.3');
内容的提问来源于stack exchange,提问作者sallicap
相关产品推荐
相关产品推荐

