首页 > 解决方案 > 函数 addpath() 不会允许访问子文件夹中的文件

问题描述

我在一个子文件夹中有很多数据文件。但是当我尝试使用 addpath() 访问它们时,什么也没有发生。似乎路径搜索被困在运行脚本的文件夹中。

脚本保存在Y:\97 Master\RiometerData\ASCII

我要访问的数据文件存储在 Y:\97 Master\RiometerData\ASCII\S05\2011

我有多个 S01-S05 子文件夹,每个子文件夹都包含几年的数据。

我都试过了addpath('Y:\97 Master\RiometerData\ASCII\S05\2011')addpath('S05\2011')。如果我将文件移动到我的 ASCII 文件夹中,它可以完美运行,但当它存储在子文件夹中时则不行。

addpath('Y:\97 Master\RiometerData\ASCII\S05\2011')
fileName = 'testFile.txt';
if isfile(fileName)
    data = load(fileName);
else
    fprintf('File %s does> not exist.\n', fileName)
end

代码运行没有任何错误。

标签: pathsubdirectory

解决方案


问题解决了!isfile() 需要完整的路径。addpath() 不够(必要)。例如,将 testfile 移至Y:\97 Master\RiometerData\ASCII\subFolder1\SubFolder2。这不是这个例子最简单的方法,但如果有很多文件,我需要能够更改路径和文件名。对于单个文件,编写以下内容就足够了:

if isfile('Y:\97 Master\RiometerData\ASCII\subFolder1\SubFolder2\testFile.txt')
   %data = load(file)

.

currPath = pwd;

subFolderPath = 'subFolder1\SubFolder2';
filePath = sprintf('%s%c%s%c',currPath,'\',subFolderPath,'\');
fileName = 'testFile.txt'

file = sprintf('%s%s',filePath,fileName)

if isfile(file)
    data = load(file)
else
    fprintf('File does not exist.\n')
end

推荐阅读