检查目录中是否存在一定数量的文件 - MATLAB

4

如何检查当前目录中是否存在多个CSV文件?

我有一个名为PowerOutput.csv的CSV文件,可以使用以下命令检查其是否存在:

exist('PowerOutput.csv','file')

然而,我可能有很多这样的文件,例如PowerOutput1.csv、PowerOutput2.csv、PowerOutput3.csv等等。

查找目录中存在哪些文件的最佳方法是什么?

目前,我尝试过以下方法:

TopFolder = pwd;
SubFolder = dir(TopFolder);
SubFolder = {SubFolder.name};
SubFolder(strncmp(SubFolder,'.',1)) = [];

% -- find the number of PowerOutput
num_Power = strncmp({'PowerOutput'}, SubFolder,length('PowerOutput'));
num_Power(num_Power == 0) = [];
num_Power = 1:length(num_Power);

然后我可以通过以下方式导入数据:

% -- import inflow 
for i = 1:length(num_Power);
    filename = fullfile(TopFolder,horzcat('PowerOutput',num2str(num_Power(i)),'.csv'));
    fid = fopen(filename);
    headers = textscan(fid, '%s%s', 1, 'delimiter',',');
    dat = textscan(fid,'%s%f%f','delimiter',',','headerlines',1);
    fclose(fid);
end

但这种方法看起来很冗长。有什么建议吗?

你可能会发现这些相关的问题:这个这个 - Shai
@Shai,你为什么添加了[tag:vectorization]标签?我不确定它与此有何关系。 - Eitan T
@Shai 请参考我的评论中的类似案例。也许解决方案可以矢量化,这很好,但问题并不是专门针对矢量化,而是为了简化实现。 - Eitan T
1个回答

5

dir 中使用 *

files = dir( fullfile( TopFolder, SubFolder.name, 'PowerOutput*.cvs' ) );

谢谢。如果同一文件夹中有其他名为electric.csv的.csv文件,这个代码还能正常工作吗? - user2355358
星号('*')可以替换文件名中的任何字符。因此,'PowerOutput*.cvs' 可以匹配(例如)'PowerOutput3.cvs'、'PowerOutputWhatWasIThinking.cvs' 等等。如果您想在文件夹中查找所有 cvs 文件,只需使用 dir('*.cvs')... - Shai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接