Eingerückt wird immer mit 4 Leerzeichen pro Ebene. Leerzeichen um = bzw. += helfen auch der Lesbarkeit.
Dateien öffnet man immer mit dem with-Statement, damit sie auch sicher wieder geschlossen wird.
Man definiert nicht Variablen (k, fileObj) etliche Zeilen bevor sie gebraucht werden.
`line` ist schon ein String, das nochmal in einen String zu verwandeln ist überflüssig.
Kommen wir also zu:
Code: Alles auswählen
for i in range(100):
lines_to_read = []
zetta = startline[i]
for i in range (startline[i], endline[i]):
lines_to_read.append(zetta)
zetta += 1
k = ''
with open('file.srec', "r") as lines:
for position, line in enumerate(lines):
if position in lines_to_read:
for j in range(12, 43):
n += line[j]
k += n
`zetta` ist überflüssig, denn das hat ja immer exakt den selben Wert wie `i`, bzw. `i` kann man auch durch `zetta` ersetzen:
Code: Alles auswählen
lines_to_read = []
for zetta in range(startline[i], endline[i]):
lines_to_read.append(zetta)
So eine for-Schleife ist aber nichts anderes als ein `list`-Aufruf:
Code: Alles auswählen
lines_to_read = list(range(startline[i], endline[i]))
Jetzt brauchst Du aber gar keine Liste, sondern kannst genauso gut mit dem range-Objekt arbeiten:
Die innerste for-Schleife über j ist genauso überflüssig, weil Du da einfach mit slicing arbeiten kannst:
Code: Alles auswählen
for i in range(100):
lines_to_read = range(startline[i], endline[i])
k = ''
with open('file.srec') as lines:
for position, line in enumerate(lines):
if position in lines_to_read:
n += line[12:43]
k += n
Jetzt ist eine Schleife über einen Index ein anti-Pattern, weil man über startline und endline auch direkt iterieren kann:
Code: Alles auswählen
for start, end in zip(startline, endline):
k = ''
with open('file.srec') as lines:
for position, line in enumerate(lines):
if start <= position < end:
n += line[12:43]
k += n
So ist der Code schon deutlich übersichtlicher, und dann sieht man auch gleich das Problem:
Du hast eine Variable `n` die immer weiter wächst und eine Variable `k`, die noch viel stärker wächst, würde sie nicht in jedem Schleifendurchgang wieder geleert werden.
Mit `k` machst Du nichts. Und was Du mit `n` machst, ist wohl ungewollt.
Ungeschickt ist auch, dass Du die gesamte Datei hundert mal komplett liest, nur um ein paar Zeilen herauszuholen.
Um das lösen zu können, müßte man jetzt wissen, was Du wirklich machen willst. Sind startline-endline jeweils nicht überlappend und/oder monoton ansteigend?