MATLAB遍歷子文件夾及其下文件


函數dir

可以使用函數dir,D = DIR(‘directory_name’)返回一個結構數組,包含了文件夾directory_name下的子文件夾和子文件的一些信息,第1個成員是文件名,第4個成員表示是否為文件夾。

要注意的是第1個數組元素和第2個數組元素分別是’.’和’..’,表示當前目錄和上層目錄

clc;clear;
maindir = 'D:\qcc\HDmap_statistics_opendrive\python_code\33782112\';
subdir  = dir( maindir );

for i = 1 : length( subdir )
    if( isequal( subdir( i ).name, '.' )||...
        isequal( subdir( i ).name, '..')||...
        subdir( i ).isdir)               % 如果是目錄則跳過
        continue;
    end
    subdirpath = fullfile( maindir, subdir( i ).name, '*.txt' );
    dat = dir( subdirpath )   ;            % 子文件夾下找后綴為dat的文件

    for j = 1 : length( dat )
        datpath = fullfile( maindir, subdir( i ).name, dat( j ).name);
        fid = fopen( datpath );
        % 此處添加你的對文件讀寫操作 %
     fclose(fid);
end end

https://blog.csdn.net/qq_39516859/article/details/81844162

 


 

1. 遍歷當前文件夾下所有圖片
做圖像處理實驗,經常需要遍歷當前文件下所有圖片。matlab當然很早就考慮了這個問題,庫函數dir就是完成這個工作的。函數返回的是一個存放所有目錄下文件信息的結構體,通過遍歷結構體就可以達到訪問所有文件的目的了。具體實現見下面程序:

imgPath = 'E:/imageData/'; % 圖像庫路徑
imgDir = dir([imgPath '*.jpg']); % 遍歷所有jpg格式文件
for i = 1:length(imgDir) % 遍歷結構體就可以一一處理圖片了
img = imread([imgPath imgDir(i).name]); %讀取每張圖片
end
上面imgDir返回的是一個結構體,包含每個圖片name(名稱),date(日期),bytes(字節數),isdir(是否為文件夾/目錄),datenum(修改日期,連續日期號碼)。一般我們僅需使用圖片名稱就可以完成圖片遍歷的工作。

2. 遍歷當前文件夾下所有子文件夾中所有圖片
  如果有做co-segmentation、多圖像分類或者co-saliency等方向的人,經常會遇到需要訪問不同分類圖片文件夾下的圖片。這時候我們就需要先遍歷所有子文件夾,然后依次再遍歷每個子文件夾下的圖片。程序如下:

imgDataPath = 'E:/imageData/';
imgDataDir = dir(imgDataPath); % 遍歷所有文件
for i = 1:length(imgDataDir)
if(isequal(imgDataDir(i).name,'.')||... % 去除系統自帶的兩個隱文件夾
isequal(imgDataDir(i).name,'..')||...
~imgDataDir(i).isdir) % 去除遍歷中不是文件夾的
continue;
end
imgDir = dir([imgDataPath imgDataDir(i).name '/*.jpg']);
for j =1:length(imgDir) % 遍歷所有圖片
img = imread([imgDataPath imgDataDir(i).name '/' imgDir(j).name]);
end
end
上面需要注意去除兩個系統自帶的隱藏文件夾,這個在dir函數讀取所有文件時候也會全部遍歷出來,然后去除非子文件夾的文件。當然,如果當前文件夾下也有圖片,if語句最后一個條件不用判斷了。
————————————————
版權聲明:本文為CSDN博主「無鞋童鞋」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/FX677588/article/details/53126961

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM