2012-03-27 5 views
1

Dies ist nicht so sehr ein spezifisches Problem als etwas, das ich eher für eine "Pythonic" philosophische Antwort suche. Nämlich, was ist der beste Weg, um einzigartige Dinge zu verfolgen und sicherzustellen, dass keine Duplikate entstehen?Was ist der effizienteste Weg, um die heruntergeladenen Dateien in einem Python-Programm nachzuverfolgen?

Zum Beispiel schreibe ich ein Skript, um eine Website für Links zu Songs auf SoundCloud zu kratzen, damit ich sie automatisch herunterladen kann. Wenn ich dieses Programm beispielsweise mit cron automatisieren möchte, was ist der effizienteste Weg, um sicherzustellen, dass ich nur Inhalte herunterlade, die ich noch nicht habe?

Oder, wenn ich Bilder heruntergeladen habe, wie kann ich sicherstellen, dass es keine Duplikate gibt, oder habe ich einen Prozess, der Duplikate effizient sucht und entfernt?

Art der offenen Enden, so wenig oder so viel wie Sie bitte beitragen.

Danke.

Antwort

2

Verwenden Sie ein Diktat oder Set. Erwägen Sie, für jedes Element eine Prüfsumme zu berechnen. Dies bringt Sie zum so genannten Content Addressable Storage, wo die Prüfsumme tatsächlich gespeichert wird, als wäre es der "Name" des Elements, und ein separater Index wird gespeichert, der Dinge wie Dateinamen oder Songnamen den Prüfsummen oder Datenblöcken zuordnet. Das Problem mit dem CAS-Ansatz in Ihrem speziellen Fall ist, dass es Ihnen möglicherweise nicht möglich ist, eine Prüfsumme zu erhalten, die auf der Remote-Seite für neuen Inhalt berechnet wird - so vermeiden Programme wie rsync das Kopieren doppelter Daten.