【问题标题】:check if a number of files exists in a directory - matlab检查目录中是否存在多个文件 - matlab
【发布时间】:2023-03-24 18:02:01
【问题描述】:

如何检查当前目录中是否存在多个 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

但这似乎是一种非常冗长的做法。有什么建议?

【问题讨论】:

  • 您可能会发现这些问题相关:this onethis one
  • @Shai 为什么要添加vectorization 标签?我不确定它是如何相关的。
  • @Shai 请参阅my comment 了解类似情况。也许解决方案是矢量化的,这很好,但问题并不是专门针对矢量化,而是简化实现。

标签: file matlab csv


【解决方案1】:

dir 中使用*

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

【讨论】:

  • 谢谢。如果同一文件夹中有其他 .csv 文件,例如名为electric.csv,这是否也有效?
  • astrics ('*') 替换文件名中的任何字符。所以'PowerOutput*.cvs'匹配(例如)'PowerOutput3.cvs'、'PowerOutputWhatWasIThinking.cvs'等。如果你想在一个文件夹中找到所有的cvs文件,只需dir('*.cvs')...
猜你喜欢
  • 1970-01-01
  • 2018-07-15
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多