python批量处理

# -*- coding: utf-8 -*-

"""

Created on Sat Jun 20 19:36:34 2015



@author: chaofn

"""

import os



"""

这个程序的目的是将linux下/ifs/home/fanchao/Manesh_pdb目录中的所有文件(一共有215个文件)

批处理

将pdb文件生成dssp文件



"""

#listdir返回文件名的列表

fileLine=os.listdir('/ifs/home/fanchao/Manesh_pdb')

#遍历整个列表

for i in range(len(fileLine)-1):

    #将字符串用变量表示

    input_file='/ifs/home/fanchao/Manesh_pdb/'+fileLine[i]

    #先去掉文件名的后缀,然后形成后缀为dssp的文件名

    out_file=fileLine[i].split('.')[0]+'.dssp'

    output_file='/ifs/home/fanchao/Manesh_dssp/'+out_file

    #注意:参数的传递(先是%s,然后是%变量名),多个变量的传入要用元组表示,在元组前用%

    os.system('/ifs/share/lib/dssp/dssp2 -i %s -o %s' %(input_file,output_file))

 批量处理数据:从dssp文件夹中遍历提取符合要求的数据,并写入另一个文件夹:

 1 # -*- coding: utf-8 -*-

 2 """

 3 Created on Sun Jun 21 13:03:19 2015

 4 

 5 @author: chaofan

 6 """

 7 

 8 import os   

 9 import re

10 #列出dssp文件夹中的所有文件名,返回的是一个列表

11 files=os.listdir('G:/Manesh_dssp') 

12 #遍历整个文件夹

13 for filename in files:

14     #将文件的名称和扩展名分离

15     portion=os.path.splitext(filename)

16     #将每个文件后缀.dssp转化成.fasta。以便访问.fasta的文件

17     fastaFile=portion[0]+'.fasta'

18     #打开参数指定的fasta文件

19     fp=open('G:/Manesh_fasta/%s' %fastaFile)

20     #读取文件的第一行

21     strLine=fp.readlines()[0]

22     #用正则式提取该行的一个字母

23     letter=re.search(':([A-Z])\|',strLine).group(1)

24     #打开参数指定的dssp文件

25     fr=open('G:/Manesh_dssp/%s' %filename)

26     #生成后缀名为txt的文件

27     txtFile=portion[0]+'.txt'

28     fw=open('G:/Manesh_ACC/%s' %txtFile,'w' )

29     #从每个dssp文件的第28行开始读取

30     for line in fr.readlines()[28:]:

31         lineList=[]

32         #如果第11个字符等于参数字符,则写入

33         if line[11]==letter:

34             lineList.extend([line[7:10],line[11],line[13],line[35:38],'\n'])

35         #将列表转化成字符串并写入文件

36         fw.write(' '.join(lineList))

37     #关闭流

38     fw.close()

39     fr.close()

40     fw.close()

 

你可能感兴趣的:(python)