用一個真實的例子替換了例子文件;用代替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
提交
取消