2013-06-03 71 views
4

如何檢查當前目錄中是否存在多個csv文件?檢查目錄中是否存在多個文件 - matlab

我有一個名爲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 

但這似乎做的真是囉嗦的方式。有什麼建議麼?

+0

您可能會發現這些問題相關:這一個](http://stackoverflow.com/questions/14213442/matlab-file-name-with-zero-padded - 數字/ 14214042#14214042)和[this one](http://stackoverflow.com/questions/15366374/how-can-i-load-100-files-with-similar-names-and-or-string-in - 只是一步在-MA/15366423#15366423)。 – Shai

+0

@Shai你爲什麼添加[tag:vectorization]標籤?我不確定它是如何相關的。 –

+0

@Shai請參閱[我的評論](http://stackoverflow.com/questions/16881196/how-to-count-number-of-1-and-0-in-the-matrix?noredirect=1#comment24388824_16881196)對於類似的情況。也許解決方案是矢量化的,這很好,但問題不是專門針對矢量化,而是針對簡化實現。 –

回答

5

使用*dir

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

謝謝。例如,如果在同一個文件夾中存在其他.csv文件(例如,稱爲electric.csv),這也可以工作嗎? – user2355358

+0

astrics(''*'')替換文件名中的任何字符。因此''PowerOutput * .cvs''匹配(例如)'PowerOutput3.cvs','PowerOutputWhatWasIThinking.cvs'等。如果你想查找文件夾中的所有cvs文件,只需'dir('*。cvs')' ... – Shai