Matlab查找文件名中是否有空格並修改


由於caffe並不能識別帶有空格的文件名,而由於我之前編的提取的數據的小軟件,中間各種改。然后可能存在文件名中帶有空格的情況。但是這個如果用眼睛瞅,好難找呀。所以突然想到了編個小程序來查找,果然還是編程序方便呀,知道了主要的函數后兩下就搞定了。非常快,而且這個matlab查找這種東西,非常快。快的出乎,查找大概3萬多個數據。只要兩秒。擦,我最開始自己在那瞅,瞅了我半天才找到,而且還很辛苦,我擦。以后果斷各種問題,全部都編程解決。后來再想想,其實找到也沒啥用,還不如直接找到並直接把文件名中的空格去掉。然后輸出個去掉空格的文件名,這樣再看,還更方便,所以再加了功能。

總共31929數據,分為10類,保存在10個文件夾中。里面總共有兩個帶有空格的文件,如果沒有加入修改文件(把帶有空格的文件改為不帶空格的文件)程序運行時間2.699383秒,加入新功能后程序運行時間3.018349秒,還是可以接受的

 1 clear;close all;clc;
 2 %%
 3 %程序實現的功能
 4 %1、檢查指定路徑中的子文件夾中的文件名中是否帶有空格
 5 %%
 6 %程序中用到的之前不清楚的函數如下
 7 %1)strfind(a,b):即找a中是否有b,如果a中有b,則輸出b的位置序號。沒有輸出空數組
 8 %2)isempty(a):判斷數組是否為空
 9 %3)strrep(a,b,c):就是把a中所有出現的b換為c
10 %411 %%
12 tic;
13 disp('程序開始執行');
14 %%%%%%需要更改的參數(即文件夾路徑)%%%%%%%%%%%%%%%%%%%%%%%%%%
15 
16 path='C:\Users\Dy\Desktop\歸一化后的圖像\sjfg\train';
17 
18 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19 count=0;%用於統計總共找到幾個文件名錯誤的文件
20 dirList=dir(path);%讀取文件夾列表,這種方式讀取會保留原文件.(在結構體中第一個)和上一層目錄..(在結構體第二個)
21 countList=length(dirList);%文件夾個數
22 fid = fopen([path,'\','errorlist.txt'], 'w');%打開數據文件夾時,對應的錯誤文件名輸出列表
23 for numList=3:countList%文件夾從3開始
24     if(length(dirList(numList).name)>=2)%根據這個過濾掉在此文件夾可能存在的txt文件
25         continue;
26     end
27     fileName=dir([path,'\',dirList(numList).name]);%讀取子文件夾
28     fileSum=length(fileName);%統計子文件夾中的文件個數
29     disp(['開始搜索文件夾',dirList(numList).name]);
30     for fileNum=3:fileSum%文件從3開始
31         judge=strfind(fileName(fileNum).name,' ');
32         if isempty(judge)
33             continue;
34         else
35             fprintf(fid,'%s', '找到的含有空格的文件為:');
36             fprintf(fid,'%s', [dirList(numList).name,'/',fileName(fileNum).name]);%輸入:子文件/圖片名稱
37             fprintf(fid,'\n');%換行
38             count=count+1;
39             disp(['找到一個帶有空格的文件,文件完整路徑為',' ',dirList(numList).name,'/',fileName(fileNum).name]);
40             %后來想到添加的功能找到了帶有空格的文件,把這個文件的文件名中的空格去掉作為一個新的文件名保存
41             newFileName=strrep(fileName(fileNum).name,' ','');
42             fprintf(fid,'%s', '修改后的文件為:');
43             fprintf(fid,'%s', [dirList(numList).name,'/',newFileName]);%輸入:子文件/圖片名稱
44             fprintf(fid,'\n');%換行
45             fprintf(fid,'\n');%換行
46             fulloriginalname=[path,'\',dirList(numList).name,'\',fileName(fileNum).name];
47             fullchangename=[path,'\',dirList(numList).name,'\',newFileName];
48             movefile(fulloriginalname,fullchangename);
49             disp(['去除文件名中的空格后,文件完整路徑為',' ',dirList(numList).name,'/',newFileName]);
50             disp(' ');
51         end
52     end
53 end
54 fclose(fid);%關閉文本文件
55 fclose('all');%關閉所有連接,防止沒關掉的情況
56 disp(['程序執行完畢','總共找到',' ',num2str(count),' ','個文件名中帶有空格的文件']);
57 toc;

文件夾結構

命令窗口輸出

文本文件中的內容

擦,不過編這程序,才發現,之前編程序總感覺自己編的好慢,好搓。原來是主要要用哪些函數不清楚。感覺如果用matlab來做數據預處理,主要就是要熟悉里面的各種函數,如果知道了各種函數,編程好快好輕松。而且matlab的運行速度其實也好快的。

 


免責聲明!

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



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