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的运行速度其实也好快的。

 

posted @ 2015-07-02 15:03  菜鸡一枚  阅读(3343)  评论(0编辑  收藏  举报