Hi, wenn ich z.b. eine bootp datei habe und in dieser Datei soll wirklich nur ein Eintrag einmal vorhanden sein, also ein Wert darf nicht doppelt in dieser Datei gepflegt sein, wie kann ich dies überprüfen? Mit welcher Programmiersprache oder Windowsbatch kann ich so etwas realisieren? Wer kann mir Tipps geben? Vielen Dank schon mal.
Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge
Hallo!
Vielleicht geht das:
--- schnipp
import sys # fuer die Kommandozeilenparameter
import md5 # Pruefsummenbibliothek
lines = open(sys.argv[1], "r").readlines() # alle Zeilen einlesen
hashdict={} # hier speichern wir die Hashcodes
hash=md5.new(lines[0]) # Hashcode der ersten Zeile
hashdict[hash.digest()]="" # den Hashwert der ersten Zeile abspeichern
dellist=[] # die Liste der zu loeschenden Zeilen
for i in range(1,len(lines)): # Schleife: Zeile 2 - Ende
-> hash=md5.new(lines[i]) # Hashwert der aktuellen Zeile ausrechnen
-> if hashdict.has_key(hash.digest()): # aktueller Hash schon vorhanden?
--> dellist.append(i) # diese Zeile bitte loeschen
-> else:
--> hashdict[hash.digest()]="" # unique Zeilen ins Dictionary
dellist.reverse() # damit die Indexe nicht verrutschen
for duplicate in dellist:
-> del lines[duplicate] # loesche alle mehrfachen Zeilen
f = open(sys.argv[2], "w") # die Ausgabedatei oeffnen
f.writelines(lines) # schreibe alle uebriggebliebenen Zeilen
f.close() # das wars
--- schnapp
Übernehme keine Garantie für die Richtigkeit.
-> = ein Tab
--> = zwei Tabs (bei Python ist die Formatierung wichtig)
Gruss
ChrE