Ja tut mir leid. Ich hab mich zu Beginn nicht gut ausgedrückt und seitdem hat sich eine Kleinigkeit mit der Ausgabedatei geändert.
Also beim Ausführen des Skriptes, kann man ein File einlesen.
Anschließend wird dieses nach der Zeile die mit ABC startet durchsucht und speichert diese Zeile + 2 Folgezeilen in DATEIA.
Darauf folgt die Durchsuchung nach DEF und speichert diese Zeile + 6 Folgezeilen ebenso in DATEIA.
Stand jetzt werden alle Zeilen (bis auf die, die mit ABC/DEF beginnen) in DATEIB gespeichert.
Somit ist das Problem, dass die "Folgezeilen" nicht in DATEIB gespeichert werden sollen.
Sorry für die schlechte Formulierung und Änderung!
Anbei der komplette Code, der bis auf das "Problem" macht was er soll.
Vielleicht erklärt das dann etwas mehr.
Code: Alles auswählen
import os
import re
from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter.filedialog import asksaveasfilename
from tkinter.messagebox import showerror
class MyFrame(Frame):
def __init__(self):
Frame.__init__(self)
self.master.title("waehle_datei")
Label(self, text='waehle_datei').grid(row=0, sticky=N+E)
self.master.rowconfigure(5, weight=1)
self.master.columnconfigure(5, weight=1)
self.grid(sticky=N+E+S+W)
global knopf1
self.knopf1 = Button(self, text="Browse", command=self.load_file, width=10)
self.knopf1.grid(row=1, column=0, sticky=N+E+S+W)
global knopf2
self.knopf2 = Button(self, text="Execute!", command=self.Uebersetzung, width=10)
self.knopf2.grid(row=2, column=0, sticky=N+E+S+W)
def load_file(self):
global fname
fname = askopenfilename(filetypes=(("PC_FILES", "*.pc;*.inc"),
("N_FILES", "*.nas;*.dat"),
("ALL_FILES", "*.*") ))
if fname:
try:
print("""file wird geladen: self.settings["template"].set(fname)""")
print(fname)
except:
showerror("Open Source File", "Failed to read file\n'%s'" % fname)
return
def Uebersetzung(self):
ori = open(fname, "r")
func = str(ori)
lines=ori.readlines()
# Erstellt 2 neue .inc Dateien
if func.find(".inc")>0:
newDATEIA = open(os.path.splitext(ori.name)[0] + '_neueA.inc' , "w")
newDATEIB = open(os.path.splitext(ori.name)[0] + '_neueB.inc' , "w")
i=0
outDATEIA = []
outDATEIB = []
for line in lines:
if i < len(lines):
if line.startswith("ABC"):
outDATEIA.append(line)
outDATEIA.append(lines[i+1])
outDATEIA.append(lines[i+2])
elif line.startswith("DEF"):
outDATEIA.append(line)
outDATEIA.append(lines[i+1])
outDATEIA.append(lines[i+2])
outDATEIA.append(lines[i+3])
outDATEIA.append(lines[i+4])
outDATEIA.append(lines[i+5])
outDATEIA.append(lines[i+6])
else:
outDATEIB.append(line)
i=i+1
for o in outDATEIA:
newDATEIA.write(o)
for p in outDATEIB:
newDATEIB.write(p)
### ENDE ###
if __name__ == "__main__":
MyFrame().mainloop()