为了账号安全,请及时绑定邮箱和手机立即绑定

针对巨大的串联文件优化脚本/循环以丢弃文件列表中的有缺陷的项目

针对巨大的串联文件优化脚本/循环以丢弃文件列表中的有缺陷的项目

呼啦一阵风 2021-04-09 04:42:46
用一个真实的例子替换了例子文件;用代替nbratoms变量nbrbonds。初学者的问题。我想针对大型文件(100G +)优化以下脚本。我昨天发现了itertools的存在,但是没有任何线索。f = open(sys.argv[1], "r")out = open(sys.argv[2], 'w')lines = f.read().split('\n@<TRIPOS>MOLECULE')for i in lines:     ii=i.split('\n@<TRIPOS>',4)     header=ii[0]    infos=header.split('\n')[2]    nbrbonds=infos.split(' ')[2]    if str(nbrbonds) in ii[2]:        out.write('\n@<TRIPOS>MOLECULE'+str(i))out.close()f.close()处理后的文件由串联的200,000+个单个MOL2文件组成(下面的最后一个示例)。该脚本的思想是首先将输入文件拆分为以两个定界的项目@<TRIPOS>MOLECULE(=新MOL2文件的第一行);然后根据起始行拆分这些项目@<TRIPOS>为4个部分(即,@<TRIPOS>MOLECULE,@<TRIPOS>ATOM,@<TRIPOS>BOND和@<TRIPOS>ALT_TYPE)。对于每个单个MOL2文件,我想检查14标题中(第二个)位置(每个单个MOL2文件中的不同)处的值@<TRIPOS>MOLECULEZ119822364414 14 0 0 0USER_CHARGES出现在单个文件的第3部分(以下)中:@<TRIPOS>BOND1       1       2 12       2       3 13       2       4 14       2       5 15       5       6 ar6       5      11 ar ...如果是这样->用\n@<TRIPOS>MOLECULE第一行将其打印到outputfile (本质上就是单个MOL2文件的外观)。它似乎可以正常工作,但是我担心它太业余了。另外,我不知道如何实现避免输出文件以这样的双头标记开头的步骤@<TRIPOS>MOLECULE@<TRIPOS>MOLECULEZ1198223644...任何帮助的欢迎!我加入了一个文件含有6个级联MOL2文件; 奇数文件是正确的;甚至文件-错误。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信