利用Python將.mol2文件格式的分子庫拆分成單個.mol2格式的文件,以便從分子庫中眾多的化合物進行拆分,有利於逐個分析所提取的化合物。拆分主要的思想如下:
1.用戶選擇分子庫文件所在的目錄以及選擇將拆分文件所存儲的目錄
2.讀取分子庫文件所有內容
3.依照一定的拆分規律,將分子庫文件逐個拆分並寫入新的文件
主要依照以上思路即可實現將.mol2分子庫文件進行拆分,廢話不多說,直接看干貨:
1 import os 2 from tkinter import filedialog 3 # 拆分文件 4 def divide_file(read_fold, write_fold): 5 all_files = [] 6 for files in os.walk(read_fold): 7 all_files = files[2] 8 for file in all_files: 9 file_path = read_fold + '/' + file 10 with open(file_path, 'r') as mol2_file: 11 contents = mol2_file.readlines() 12 contents.append('@<tripos>MOLECULE') 13 write_file(contents, write_fold, file) 14 15 # 寫入文件 16 def write_file(article, write_fold, file_name): 17 file_name = file_name[:-5] 18 file_path = write_fold + '/' + file_name 19 if not os.path.exists(file_path): 20 os.makedirs(file_path) 21 print(file_path, "創建成功") 22 else: 23 print(file_path, "目錄已存在") 24 temp_article = [] 25 molecule_count = 0 26 for line in article: 27 if not line.startswith('@<tripos>MOLECULE'): 28 temp_article.append(line) 29 elif line.startswith('@<tripos>MOLECULE'): 30 molecule_count = molecule_count + 1 31 if molecule_count == 1: 32 temp_article.append(line) 33 elif molecule_count == 2: 34 path = file_path + '/' + temp_article[1].rstrip("\n")+'.mol2' 35 with open(path, 'w') as new_file: 36 for new_line in temp_article: 37 new_file.write(new_line) 38 temp_article.clear() 39 temp_article.append('@<tripos>MOLECULE') 40 molecule_count = 1 41 42 if __name__ == '__main__': 43 # 讀取獲得的文件夾路徑 44 read_fold = filedialog.askdirectory() 45 # 讀取寫入文件夾的路徑 46 write_fold = filedialog.askdirectory() 47 divide_file(read_fold, write_fold)
