2017-06-20 74 views
1

我有一個包含許多.csv文件的文件夾。我需要一次加載一個文件並執行一些操作。我嘗試使用csvreadxlsread命令在循環中加載文件,但它不起作用。我的文件格式爲.csv,但csvread未讀取,因爲我的文件有文本和數字。因此我使用`xlsread',但是我收到錯誤,說找不到file.csv。我不確定這個問題is.I什麼用下面的代碼在一個循環讀取文件:使用xlsread和csvread時出錯

files=dir('foldername'); 
    N=length(files); 
    for i=1:N 
     thisfile=xlsread(files(i).name); 
    end 

變量文件被讀作一個結構,它會顯示文件名,filelocation,字節和日期。我應該轉換爲數組以便讀取文件的內容嗎?

+0

'文件(我).name'只是給出了文件名。你包括完整的路徑嗎? –

回答

2

dir的輸出將包括條目...以及'foldername'中的任何其他子文件夾,因此您需要先刪除這些條目。你能做到這一點,像這樣:

files = dir('foldername'); 
files = files(~[files.isdir]); 

或者,如瓦Tshitoyan建議,你可以收集該.csv文件,像這樣:

files = dir('foldername\*.csv'); 

如果您有任何其他文件你唐't想要在文件夾中進行處理,您應該使用第二種方法。

如果您收到一條錯誤消息,說您在致電xlsread時找不到該文件,則可能意味着您需要指定文件的完整路徑而不是文件名。您可以使用dir返回的結構'folder'領域,並通過沿與文件名fullfile,像這樣:

for i = 1:N 
    thisfile = xlsread(fullfile(files(i).folder, files(i).name)); 
    % Subsequent processing 
end 
+0

嘗試此操作時出現調用錯誤。這個代碼是'xlsread(fullfile(files(i).folder,files(i).name))'試圖從我的文件夾中讀取.xlsx文件。但我的文件夾有.csv文件 – Prasanth

+0

@Prasanth:什麼是「invoke」錯誤?你在'files(i).folder'和'files(i).name'中看到了什麼? – gnovice

+0

所以它說C:\ Users \ Documents \ MATLAB \ myfolder \ files.xlsx找不到。 '文件(i).folder'顯示我的文件夾的路徑,'files(i).name'顯示一個點'。'。 – Prasanth