将根文件夹内的所有子文件夹内的文件进行按比例分类。。。。。by Matlab

之所以写这段代码,是为了分类文件夹内的所有文件,因为做训练用的数据真的太多了,所以,写了一段Matlab,让其自动按比例分类。

main:

 1 %文件夹路径,不同设备,读取字符不同
 2 clear all
 3 clc
 4 
 5 %% 选择要分的文件夹路径/存放路径/文件夹名称
 6 fprintf('选择Train文件夹\r');
 7 pause(2)
 8 path=uigetdir('选择待分析的文件夹');
 9 if path ==0
10     fprintf('取消选择文件夹')
11 end
12 
13 fprintf('选择Val文件夹\r');
14 pause(1)
15 path_new1=uigetdir('Val文件夹');
16 if path_new1 ==0
17     fprintf('取消选择文件夹')
18 end
19 
20 
21 fprintf('选择Test文件夹\r');
22 pause(1)
23 path_new2=uigetdir('Test文件夹');
24 if path_new2 ==0
25     fprintf('取消选择文件夹')
26 end
27 
28 fprintf('选择Little文件夹\r');
29 pause(1)
30 path_new3=uigetdir('Little文件夹');
31 if path_new3 ==0
32     fprintf('取消选择文件夹')
33 end
34 
35 yesornot(path,path_new1,path_new2,path_new3);

yeornot.m:

 1 function yesornot(path,newpath1,newpath2,newpath3)
 2 
 3 file=dir(path);
 4 file_name={file.name};
 5 file_length=length(file_name);
 6 %   10%->Val
 7 num1=ceil(file_length*0.1);
 8 %   20%->Test
 9 num2=ceil(file_length*0.2);
10 k=1;
11 
12 for i=1:file_length
13     
14     if strcmp(file_name{i},'.')|| strcmp(file_name{i},'..')||strcmp(file_name{i},'.DS_Store')
15         continue;
16     end
17     
18     file_new_path=fullfile(path,file_name{i});
19     if exist(file_new_path,'dir')==7
20         yesornot(file_new_path,fullfile(newpath1,file_name{i}),fullfile(newpath2,file_name{i}),fullfile(newpath3,file_name{i}));
21     else
22         if num1==num2
23             if exist(newpath3,'dir')~=7
24                 mkdir(newpath3);
25             end
26             movefile(path,newpath3);
27             savedata(path,file_length);
28             savemessage('本文件夹内文件较少,文件夹整体移动 出局。');
29             return
30         elseif k<=num1
31             if exist(newpath1,'dir')~=7
32                 mkdir(newpath1);
33             end
34             filemove=fullfile(path,file_name{i});
35             saveval('/Users/liyong/Desktop/new/val.txt',file_name{i});
36             movefile(filemove,newpath1);
37             k=k+1;
38             continue
39         elseif k<=num1+num2
40             if exist(newpath2,'dir')~=7
41                 mkdir(newpath2);
42             end
43             filemove=fullfile(path,file_name{i});
44             
45             saveval('/Users/liyong/Desktop/new/test.txt',file_name{i});
46             movefile(filemove,newpath2);
47             k=k+1;
48             continue
49         else
50             savedata(path,file_length);
51             return
52         end
53     end   
54 end

其中包含,移动数据保存。

posted @ 2016-08-13 15:21  第二杯咖啡  阅读(707)  评论(0)    收藏  举报