2016-07-27 18 views
1

Ich habe eine Liste von URLs in 'origFile', die erweitert und in 'readyFile' geschrieben wird. Ich möchte URLs nur dann zu 'readyFile' hinzufügen, wenn sie nicht bereits in 'readyFile' sind.Zeichenfolge Vergleich nicht erkennen

Im Moment schreibt es nur die ganze Liste in 'readyFile' jedes Mal wenn ich es laufe. Ich habe versucht, die Erweiterung '' + str + '' außerhalb der if-Anweisung zu verschieben, aber das Problem blieb bestehen.

+0

Sie brauchen nicht die 'file.close () 'Linien, als Sie die Dateien in einem' mit'-Block geöffnet haben. Sie werden geschlossen, wenn Sie den Block verlassen. – kirkpatt

+0

Das 'None' sollte durch' continue' ersetzt werden. –

Antwort

1

Durch Schreiben readyFile.write(...) wird Ihr nächster readyFile.read() Anruf überschrieben. Sie sollten Ihren readyFile Inhalt in eine Variable direkt nach der with Anweisung speichern:

with open('bpBlacklist.txt', 'r') as origFile, open('bpBlacklistReady','r+') as readyFile : 
    readyFileContent = readyFile.read() 
+0

Dies ist die richtige Lösung, danke – pproctor

0

Ihr Zustand nicht wie erwartet funktioniert, weil die read() Methode, um die gesamte Datei als String zurück. Sie müssen die Mitgliedschaft zwischen einer Anzahl von URLs überprüfen.

Und statt über die Datei von looping und überprüfen Sie die Mitgliedschaft für alle URLs können Sie den Unterschied mit set.difference() Funktion finden Sie dann die zusätzlichen URLs schreiben:

with open('bpBlacklist.txt', 'r') as origFile, open('bpBlacklistReady','r+') as readyFile : 
    current = set(origFile) 
    diffs = current.difference(readyFile.readlines()) 
    for url in diffs: 
     readyFile.write(url + '\n') 
+0

es immer noch die ganze Liste in die ReadyFile mit Ihren Änderungen Neuformatierung – pproctor

+0

@ Proctor Sind Sie sicher? vielleicht sind sie alle anders! – Kasramvd

+0

Nun, alle URLs in origFile sind unterschiedlich, aber sie ändern sich nicht, wenn ich nicht manuell einen anderen hinzufüge. Ich bin ein bisschen verwirrt, was du meinst – pproctor

Verwandte Themen