Ich versuche zu schreiben "TER" nach einer Zeile im outfile nach bestimmten Rückstand Nummer (passend dazu mit der Rückstand Nummer in der Referenzdatei). Der Code gibt mir keinen Fehler, sondern nur Kopien von der Infile und fügt das Wort nicht hinzu. Beim Versuch, nach ein paar Bits Code zu drucken, denke ich, dass es bricht, wenn ich versuche, im Outfile zu suchen.Hinzufügen von etwas nach einer bestimmten Zeile Python
Also das ist ein Teil. Der andere ist, wie stelle ich dann sicher, dass das Wort "TER" erst nach der letzten Restenummer hinzugefügt wird (es gibt verschiedene Anzahl von ihnen in Zeilen untereinander und ich möchte sie nur nach der letzten hinzufügen). Hier ist mein Code:
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)
Vielen Dank!
Die Dateien wie folgt aussehen:
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
Sow uns die Eingabedatei Inhalt (oder eine vereinfachte Version), dasselbe für die Referenzdatei und eine gewünschte Ausgabe (anders als der obige Code erzeugt). Auf der anderen Seite sehe ich, dass Sie während der Iteration in die Ausgabedatei schreiben. Ich denke, das könnte den Dateizeiger verwirren. – CristiFati
Ich habe getan, danke – Loki
Leider kann ich nicht herausfinden, welche der 4 Zeilen zu welcher Datei gehören :( – CristiFati