# -*- 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()