gpt4 book ai didi

python - 在特定行Python之后添加一些内容

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:31 26 4
gpt4 key购买 nike

我试图在输出文件中的特定残基编号后的一行后写入“TER”(与引用文件中的残基编号相匹配)。该代码没有给我任何错误,但仅从 infile 复制并且不添加该单词。当尝试在一些代码后打印时,我认为当我尝试在输出文件中搜索时它会中断。

这就是一部分。另一个是我如何确保仅在最后一个残基编号之后添加单词“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

最佳答案

几点/猜测:

  • 您将 of 打开为 w+,但随后又执行 for line in of:。您指的是f吗? (我建议一些更具描述性的名称)

  • 您似乎检查了“ATOM”(注意2个空格)。从你的文件来看,它应该只有 1 个空格。

为了摆脱空格问题,我建议您使用split:

 "one two three".split()
['one', 'two', 'three']

因此,对于您的情况,请使用:

for line in rf:
contents = line.split()
if contents[0] == "TER":
...


for line in f:
contents = line.split()
if contents[0] == "ATOM":
...

关于python - 在特定行Python之后添加一些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com