Ich schrieb ein Skript, um in einigen Dateien zu suchen, in denen in meiner Pipeline Sequenzen eliminiert wurden. Hier ist das Skript:Python - Teil der Zeile fehl am Platz in Datei
#!/usr/bin/python
# -*- coding: utf-8 -*-
q = open('eg-not-sec.bait').readlines()
tm = open('eg_tm0_res').readlines()
ph = open('eg_ph01_res').readlines()
secp = open('eg_secp_res').readlines()
tp = open('eg_tp_res').readlines()
ps = open('eg_ps_res').readlines()
gpi = open('eg_es_final_ids').readlines()
nf = open('eg_elim-test', 'a')
for line in q:
if line not in tm:
nf.writelines('%sTMHMM\t'%line)
elif line not in ph:
nf.writelines('%sPH\t'%line)
elif line not in secp:
nf.writelines('%sSECP\t'%line)
elif line not in tp:
nf.writelines('%sTP\t'%line)
elif line not in ps:
nf.writelines('%sPS\t'%line)
elif line not in gpi:
nf.writelines('%sGPI\t'%line)
nf.close()
Es wäre perfekt funktionieren, wenn nicht für ein Detail ist: die Sequenz-ID für die letzte Zeile ist in der ersten Zeile, und die Identifikation für wo es in letzter Linie beseitigt ist wie dies allein:
EgrG_000049700.1
PH EgrG_000055800.1
PH EgrG_000133800.1
PH EgrG_000221600.1
PH EgrG_000324200.1
PH EgrG_000342900.1
PH EgrG_000391800.1
PH EgrG_000406000.1
PH EgrG_000428150.1
TMHMM EgrG_000430700.1
PH EgrG_000477400.1
PH EgrG_000498000.1
PH EgrG_000502700.1
TMHMM EgrG_000521200.1
PH EgrG_000566700.1
PH EgrG_000633500.1
PH EgrG_000690700.1
PH EgrG_000709300.1
PH EgrG_000823900.1
PH EgrG_000907100.1
PH EgrG_000925400.1
PH EgrG_000974700.1
PH EgrG_001061400.1
PH EgrG_001081300.1
PH EgrG_001136900.1
PH EgrG_001148800.1
PH EgrG_002005100.1
PH EgrG_002026400.1
PH EgrG_002058200.1
PH
es ist ganz einfach manuell lösen nur das Kopieren des ‚PH‘ in letzter Zeile und Einfügen in dem ersten Zeile vor der Sequenz ID, aber ich würde gerne wissen, wie diese zu lösen in meinem Code und ich finde nicht heraus, wie man das macht.
Tut mir leid, Mann, es funktioniert auch nicht. Es gibt mir das gleiche Ergebnis wie zuvor. :/ Ich habe alle 'writelines()' für 'write()' und alle 'readlines()' für 'read()' geändert und es liefert mir immer genau das gleiche Ergebnis, mit dem PH allein in der letzten Zeile. Ich denke, ich muss damit leben:/hehe –
'' readlines() '' war korrekt; Mit '' read() '' haben Sie die gesamte Datei als eine einzige 'Zeile'. "PH allein in der letzten Zeile" zeigt an, dass Sie das grundlegende Problem nicht behoben haben, das Sie PH anstelle von vor dem '% s' nachgestellt haben. – jasonharper
Ah, tut mir leid. Jetzt hat es funktioniert! Vielen Dank! Aber ich musste '.readlines()' behalten, mit nur 'read()' gab es mir nichts. So, jetzt ist es mit '.readlines()' und '.write()' anstelle von 'writelines()' und mit der Änderung von PH und% s hast du mir gesagt. Danke noch einmal! –