2 Dateien vergleichen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Gast

2 Dateien vergleichen

Beitragvon Gast » Mittwoch 27. Juli 2005, 07:16

Moin,
Als Anfängerin habe Ich eine Frage:

Wie kann man 2 Dateien miteinander vergleichen und die Differenz (also nur die Strings, die unter in eine andere Datei schreiben?

Für Hilfe wäre Ich dankbar

/lg
sunnyi
Gast

Beitragvon Gast » Mittwoch 27. Juli 2005, 07:37

Hallo,

ich bin auch :roll:

wie wäre mit dem
>>> result = list(d.compare(text1, text2))

Details findest du unter 4.4.4 Differ Example aus Python Library Reference

viel Glück
Gast

Beitragvon Gast » Mittwoch 27. Juli 2005, 09:12

Yep,
Soweit war Ich schon. Aber Ich muss zugeben, dass mir der Umstieg von PHP nach Python ein wenig schwer fällt.

Mir ist beispielsweise nicht klar, wie Ich das Differ Objekt benutze

/lg
sunnyi
Gast

Beitragvon Gast » Mittwoch 27. Juli 2005, 12:09

Ein ganz einfacher Vergleich zweier Dateien wäre beispielsweise folgendes:

Code: Alles auswählen

inputFile1 = file("C:/file1.txt")
inputFile2 = file("C:/file2.txt")
outputFile = file("C:/file3.txt","w")

line1 = inputFile1.readline()
line2 = inputFile2.readline()

while line1 != "" or line2 != "":
    if line1 != line2:
        outputFile.write("Datei 1: "+line1)
        outputFile.write("Datei 2: "+line2+"\n")
    line1 = inputFile1.readline()
    line2 = inputFile2.readline()

inputFile1.close()
inputFile2.close()
outputFile.close()


Das berücksichtigt natürlich nicht den Fall, dass sich irgendwo in einer Deiner Dateien eine neue Zeile eingeschlichen hat. Wäre das der Fall, so würde natürlich natürlich alles ab der zusätzlichen Zeile unterschiedlich sein.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 28. Juli 2005, 06:26

Anonymous hat geschrieben:Mir ist beispielsweise nicht klar, wie Ich das Differ Objekt benutze


Zum Differ Objekt gibt's ein Beispiel: http://www.python.org/doc/current/lib/d ... mples.html

Hier ein Beispiel von mir:

Code: Alles auswählen

import sys,difflib

def get_lines( filename ):
    f = file( filename, "r" )
    lines = f.readlines()
    f.close
    return lines

content1 = get_lines( r"c:\datei1.txt" )
content2 = get_lines( r"c:\datei2.txt" )


d = difflib.Differ()

sys.stdout.writelines( d.compare(content1, content2) )


Für eine HTML-Ausgabe der ergebnisse gibt's hier http://www.python-forum.de/viewtopic.php?t=2487 schon was...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Beitragvon Gast » Samstag 30. Juli 2005, 18:02

Anonymous hat geschrieben:Ein ganz einfacher Vergleich zweier Dateien wäre beispielsweise folgendes:

Code: Alles auswählen

inputFile1 = file("C:/file1.txt")
inputFile2 = file("C:/file2.txt")
outputFile = file("C:/file3.txt","w")

line1 = inputFile1.readline()
line2 = inputFile2.readline()

while line1 != "" or line2 != "":
    if line1 != line2:
        outputFile.write("Datei 1: "+line1)
        outputFile.write("Datei 2: "+line2+"\n")
    line1 = inputFile1.readline()
    line2 = inputFile2.readline()

inputFile1.close()
inputFile2.close()
outputFile.close()


Das berücksichtigt natürlich nicht den Fall, dass sich irgendwo in einer Deiner Dateien eine neue Zeile eingeschlichen hat. Wäre das der Fall, so würde natürlich natürlich alles ab der zusätzlichen Zeile unterschiedlich sein.


der code hat noch ein viel größeres problem ... wenn nämlich die datei nur aus einer einzigen datei besteht (beispielsweise sind alle angaben durch ";" abgetrennt), dann wird schon beim kleinsten unterschied die komplette zeile ausgegeben und man ist wieder da, wo man angefangen hat.

--> daher wär es vielleicht sinnvoll für jede anwendung eines vergleichs eine problemspezifische ausgabe zu erstellen

mfg
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

Beitragvon cime » Samstag 30. Juli 2005, 18:04

die antwort kam gerade von mir, hatt nur vergessen mich einzuloggen, sry

*/Edit\*: hab grad gesehen, dass ich mich verschrieben hatte, hab das Wort "Datei" durch "Zeile" ersetzt, jetzt ergibts auch Sinn

Anonymous hat geschrieben:
Anonymous hat geschrieben:Ein ganz einfacher Vergleich zweier Dateien wäre beispielsweise folgendes:

Code: Alles auswählen

inputFile1 = file("C:/file1.txt")
inputFile2 = file("C:/file2.txt")
outputFile = file("C:/file3.txt","w")

line1 = inputFile1.readline()
line2 = inputFile2.readline()

while line1 != "" or line2 != "":
    if line1 != line2:
        outputFile.write("Datei 1: "+line1)
        outputFile.write("Datei 2: "+line2+"\n")
    line1 = inputFile1.readline()
    line2 = inputFile2.readline()

inputFile1.close()
inputFile2.close()
outputFile.close()


Das berücksichtigt natürlich nicht den Fall, dass sich irgendwo in einer Deiner Dateien eine neue Zeile eingeschlichen hat. Wäre das der Fall, so würde natürlich natürlich alles ab der zusätzlichen Zeile unterschiedlich sein.


der code hat noch ein viel größeres problem ... wenn nämlich die datei nur aus einer einzigen zeile besteht (beispielsweise sind alle angaben durch ";" abgetrennt), dann wird schon beim kleinsten unterschied die komplette zeile ausgegeben und man ist wieder da, wo man angefangen hat.

--> daher wär es vielleicht sinnvoll für jede anwendung eines vergleichs eine problemspezifische ausgabe zu erstellen

mfg cime
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 2. August 2005, 11:06

Wenn dem so ist (alles in einer Zeile) dann arbeite doch mit .split(";")...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder