用一个真实的例子替换了例子文件;用代替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文件; 奇数文件是正确的;甚至文件-错误。
添加回答
举报
0/150
提交
取消