Moras.gr

Αφαίρεση διπλότυπων εγγραφών από ένα αρχείο με python

Χρειάστηκε πρόσφατα να καθαρίσω ένα αρχείο από διπλότυπες εγγραφές το οποίο ήταν τεράστιο . Σίγουρα υπάρχουν άπειροι τρόποι να κάνεις κάτι τέτοιο . Με python είναι απλά ένα script 5 γραμμών και τρέχει πραγματικά πολύ γρήγορα .

Η λογική είναι ότι αφού ανοίξουμε και διαβάσουμε το αρχικό αρχείο ξεκινάμε και περνάμε την κάθε μία του γραμμή στο καινούριο αρχείο αφού πρώτα κάνουμε έλεγχο πώς δεν υπάρχει .

Παρακάτω μπορείτε να δείτε τον κώδικα :

import sys

inputFile  = sys.argv[1]
outputFile = sys.argv[2]
lines_seen = set() # holds lines already seen
outfile = open(outputFile, "w")
for line in open(inputFile, "r"):
    if line not in lines_seen: # not a duplicate
        outfile.write(line)
        lines_seen.add(line)
outfile.close()

Για να το εκτελέσουμε το παραπάνω απλά τρέχουμε την παρακάτω εντολή (έστω ότι το ονομάσαμε removeDuplicates.py)

python removeDuplicates.py input.txt output.txt

Για την ανάγνωση ενός αρχείου 30000 γραμμών χρειάστηκε 10 περίπου δευτερόλεπτα. Σε αυτό το σημείο θέλω να μοιραστώ και μία γκάφα που έκανα και σε περίπτωση που κάποιος αντιμετωπίσει το συγκεκριμένο error καλοκαιριάτικα ίσως είναι σημάδι ότι χρειάζεται όπως και εγώ διακοπές .

Τρέχοντας λοιπόν το παραπάνω script πήρα το παρακάτω μήνυμα λάθους :

$ python names-export.txt out.txt
  File "names-export.txt", line 26
    Giannis Dimitriadis
                          ^
SyntaxError: invalid syntax

Όπως θα διαπιστώσετε δεν έβαλα το όνομα του script κατά την εκτέλεση noob level 1 .

Καλό καλοκαίρι σε όλους !

Have your say