1
我想在特殊殘留數字(與參考文件中的殘基數量相匹配)之後的outfile中的一行後寫「TER」。該代碼不給我任何錯誤,但只有來自infile的副本,並不添加單詞。當試圖在一些代碼後打印時,我認爲當我試圖在outfile中搜索時會中斷打印。在特定行之後添加一些東西Python
這就是這一部分。另一個是我如何確保單詞「TER」僅在最後一個殘留數字後面添加(它們之間有不同數量的行,並且我只想在最後一行之後添加它們)。 這是我的代碼:
import sys
import argparse
def main(argv):
parser = argparse.ArgumentParser(description='Read SSBOND directives from a PDB, and generate corresponding CONECT records')
parser.add_argument('infile', help='input file (PDB format)')
parser.add_argument('outfile', help='output file (PDB format)')
parser.add_argument('reference', help =' ref')
args = parser.parse_args()
resnum_1 =[]
res = []
with open(args.infile, "r") as f, open(args.outfile, "w+") as of, open(args.reference,"r") as rf:
for line in rf:
if line[0:4] == "TER ":
resnum = line[22:27]
resname = line[17:20]
chain = line[21]
resnum_1.append(resnum)
for line in f:
of.write(line)
for line in of:
if line[0:6] == "ATOM ":
resnum_fo = line[22:27]
resname_fo = line[17:19]
chain_fo = line[21]
res.append(resnum_fo)
if resnum in resnum_1 and resnum_fo in res:
of.write("TER\n")
if __name__ == "__main__":
main(sys.argv)
非常感謝!
的文件看起來是這樣的:
ATOM 0 HB2 CYX D 452 45.962 -2.641 -17.575 1.00 0.00
ATOM 0 HB3 CYX D 452 46.188 -2.186 -19.050 1.00 0.00
TER 995 CYX D 452
ATOM 995 N ARG D 492 42.476 10.547 -39.562 1.00 0.00
母豬我們輸入的文件內容(或簡化版本),參考文件和期望輸出(與上面的代碼不同)的相同內容。另一方面,我看到你正在寫輸出文件,同時迭代它。我認爲這可能會混淆文件指針。 – CristiFati
我已經做了,謝謝 – Loki
不幸的是,我找不出哪個文件屬於哪個文件:( – CristiFati