Ja, aber ich denke das Format ist nicht ganz korrekt, wiederum ändert das wenig am Problem. Für den Anfang: https://onlinegdb.com/HkK4HCiCr
Code:
'''
2 Zeilen foo
'''
def createTestFiles():
'''
als aller erstes machen wir die beiden dateien
'''
f = open("file1.txt","w")
f.write("EXT: id=\"testdomain/web\" logo=\"andere-testdomain.com/8050\" group-title=\"DE: Horizont\n")
f.write("http://testdomain.test/55555\n")
f.write("EXT: id=\"testdomain/local\" logo=\"andere-testdomain.com/5030\" group-title=\"DE: Berlin\n")
f.write("http://testdomain.test/66666\n")
f.close()
f = open("file2.txt", "w")
f.write("EXT: id=\"testdomain/web\" logo=\"andere-testdomain.com/8050\" group-title=\"DE: Horizont\n")
f.write("http://testdomain.test/65984\n")
f.write("EXT: id=\"testdomain/local\" logo=\"andere-testdomain.com/5030\" group-title=\"DE: Berlin\n")
f.write("http://testdomain.test/31347\n")
f.write("EXT: id=\"shouldbeignored.test\" logo=\"shouldbeignored.test\" group-title=\"DE: Berlin\n")
f.write("http://shouldbeignored.test/654521\n")
f.close()
def readRecords(file):
'''
Wir wissen, dann ein Datensatz (aka Record) aus zwei Zeilen besteht
Zeile 1 beginnt immer gleich, damit erkennen wir den Anfang
Wir lesen den bzw. die Datensätze in eine Liste
'''
f = open(file, "r")
records = []
line = f.readline()
while line:
if (line.startswith("EXT:")):
records.append([line, f.readline()])
line = f.readline()
return records
def writeRecords(file, records):
'''
kleiner Helfer um eine Datensatzliste zu schreiben
'''
with open(file, "w") as f:
for record in records:
f.write(record[0])
f.write(record[1])
def main():
'''
Hauptprogramm
'''
createTestFiles()
records1 = readRecords("file1.txt")
records2 = readRecords("file2.txt")
for record1 in records1:
ext1 = record1[0]
uri1 = record1[1]
for record2 in records2:
ext2 = record2[0]
uri2 = record2[1]
equalExt = ext1 == ext2
equalUri = uri1 == uri2
if (equalExt != equalUri):
# wenn eine von beiden anders updaten, sonst nicht
# hinweis ich glaube ja, dass das nicht ganz ok ist
print("updating record:\n{}{}to:\n{}{}".format(ext1, uri1, ext2, uri2))
record1[0] = record2[0]
record1[1] = record2[1]
#ok nun schreiben wir das Ergebnis noch eine neue Datei
writeRecords("file3.txt", records1)
# hier geht es los
main()
Viel Spaß beim fertig machen.
Lesezeichen