matlab遍历文件夹 .

这又是个matlab程序,上次帮同学写了个提取序列的函数,这次要能自动将文件夹中所有文件自动的识别并创建对应的文件夹,文件夹名要和文件中某个字段相同。

好人做到底吧,首先上网搜怎么样创建文件夹,百度下,立刻出来了,用system()函数。如下

  1. tmp1=['mkdir ' dir_final];  
  2. system(tmp1);   %文件夹创建完成    
                        tmp1=['mkdir ' dir_final];
                        system(tmp1);   %文件夹创建完成  

我试了下,用下面的函数系统就自动关机了, 大笑,哈哈,

  1. fun='shutdown -s';  
  2. system(fun);  
fun='shutdown -s';
system(fun);

你运行了?哈哈,别急赶紧在运行里输入shutdown -a 就取消自动关机了,不过要快,就30秒时间。

不扯了,赶紧做正事。

这次的文件内容如下

  1. LOCUS       HUMHOX4A     5834 bp    DNA             PRI       26-NOV-1992  
  2. DEFINITION  Human homeobox HOX 4A gene for homeodomain protein, complete cds.  
  3. ACCESSION   D11117  
  4. NID         g219879  
  5. KEYWORDS    HOX 4A homeodomain protein; homeobox.  
  6. SOURCE      Human peripheral lymphocytes, cell line AKIBA, AKIBA genomic cosmid  
  7.             library, DNA.  
  8.   ORGANISM  Homo sapiens  
  9.             Eukaryotae; mitochondrial eukaryotes; Metazoa; Chordata;  
  10.             Vertebrata; Eutheria; Primates; Catarrhini; Hominidae; Homo.  
  11. REFERENCE   1  (bases 1 to 5834)  
  12.   AUTHORS   Taniguchi,Y., Fujii,A. and Moriuchi,T.  
  13.   TITLE     Cloning and sequencing of the human homeobox gene HOX4A  
  14.   JOURNAL   Biochim. Biophys. Acta 1132, 332-334 (1992)  
  15.   MEDLINE   93041940  
  16. COMMENT     Submitted (14-MAY-1992) to DDBJ by: Yasushi Taniguchi    
  17.             Dept. of Cell Biology    
  18.             Tokai University Schoo  
LOCUS       HUMHOX4A     5834 bp    DNA             PRI       26-NOV-1992
DEFINITION  Human homeobox HOX 4A gene for homeodomain protein, complete cds.
ACCESSION   D11117
NID         g219879
KEYWORDS    HOX 4A homeodomain protein; homeobox.
SOURCE      Human peripheral lymphocytes, cell line AKIBA, AKIBA genomic cosmid
            library, DNA.
  ORGANISM  Homo sapiens
            Eukaryotae; mitochondrial eukaryotes; Metazoa; Chordata;
            Vertebrata; Eutheria; Primates; Catarrhini; Hominidae; Homo.
REFERENCE   1  (bases 1 to 5834)
  AUTHORS   Taniguchi,Y., Fujii,A. and Moriuchi,T.
  TITLE     Cloning and sequencing of the human homeobox gene HOX4A
  JOURNAL   Biochim. Biophys. Acta 1132, 332-334 (1992)
  MEDLINE   93041940
COMMENT     Submitted (14-MAY-1992) to DDBJ by: Yasushi Taniguchi  
            Dept. of Cell Biology  
            Tokai University Schoo

不同的是这次有n个这样的文件,要创建n个文件夹,对应的文件夹名如字段ACCESSION后面的6个字符串所示,

毫无疑问又要用大循环了,而且这个大循环外面还要套个遍历放这写文件的文件夹中内容的循环,(把这句一定要读懂),matlab自带的dir函数就有这个功能。

  1. DIRS=dir([SCR_DIR,'*.txt']);  
  2.   
  3. bit_flag=0;  
  4.   
  5. n=length(DIRS);  
  6. for i=1:n  
  7.     if ~DIRS(i).isdir  
DIRS=dir([SCR_DIR,'*.txt']);

bit_flag=0;

n=length(DIRS);
for i=1:n
	if ~DIRS(i).isdir

这就起到了遍历的功能。

接下来要打开文件了,并找对应的字段,因为这个字段总是在前面,所以少读点内容就可以了。

  1. file_name=SCR_DIR;  
  2.         file_name=strcat(file_name,DIRS(i).name);  
  3.         file_id=fopen(file_name,'r');  
  4.         file_content=fread(file_id,500);  
  5.         fclose(file_id);  
  6.         for i=1:480  
  7.             switch file_content(i)  
  8.                 case {'A'}  
  9.                     if(strncmp(char(file_content(i:i+9))','ACCESSION',9))  
file_name=SCR_DIR;
        file_name=strcat(file_name,DIRS(i).name);
        file_id=fopen(file_name,'r');
        file_content=fread(file_id,500);
        fclose(file_id);
        for i=1:480
            switch file_content(i)
                case {'A'}
                    if(strncmp(char(file_content(i:i+9))','ACCESSION',9))

读取了字段就可以创建文件夹了,

  1. dir_tmp=char(file_content(i+12:i+13+5));  
  2.                        dir_tmp=dir_tmp(1:6);  
  3.                        dir_final=[DIR_NAME_PART,dir_tmp'];  
  4.                        tmp1=['mkdir ' dir_final];  
  5.                        system(tmp1);   %文件夹创建完成    
  6.                        bit_flag=1;  
 dir_tmp=char(file_content(i+12:i+13+5));
                        dir_tmp=dir_tmp(1:6);
                        dir_final=[DIR_NAME_PART,dir_tmp'];
                        tmp1=['mkdir ' dir_final];
                        system(tmp1);   %文件夹创建完成  
                        bit_flag=1;

全部遍历完就可以了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值