Sortieren von Bilddateien mit Python (2)

Vorwort

Letztes Mal habe ich bisher eine große Anzahl von Bilddateien in Jahres- / Monatsordner sortiert. Zu diesem Zeitpunkt wurden in jedem Ordner die folgenden CSV-Dateien als Hinweise zum Löschen doppelter Dateien generiert.

info.csv


IMG_2607.jpg,BCF3E765,1944106
IMG_2607(1).jpg,BCF3E765,1944106
IMG_2608.jpg,02B27221,3109397
IMG_2608(1).jpg,02B27221,3109397
010(8).jpg,E4A68AB2,3801239
010(9).jpg,3EBBC7BD,1841698
010(10).jpg,B9431E60,103645

Von links werden der Dateiname, CRC32 und die Dateigröße angezeigt, und Dateien mit derselben Dateigröße wie CRC32 sind mit ziemlicher Sicherheit dieselbe Datei, sodass sie gelöscht werden. Apropos obige Datei: Die 2. und 4. Zeile sind doppelt vorhanden, daher möchte ich sie wie folgt in zwei Gruppen unterteilen.

servived


IMG_2607.jpg,BCF3E765,1944106
IMG_2608.jpg,02B27221,3109397
010(8).jpg,E4A68AB2,3801239
010(9).jpg,3EBBC7BD,1841698
010(10).jpg,B9431E60,103645

delete


IMG_2607(1).jpg,BCF3E765,1944106
IMG_2608(1).jpg,02B27221,3109397

Die Idee ist einfach Liste löschen ← ursprüngliche Liste-doppelte Liste und Überlebensliste ← ursprüngliche Liste-Liste löschen, aber ich habe verschiedene Knetvorgänge versucht, konnte aber keine überzeugende Implementierung erreichen. Also diesmal

  1. Bereiten Sie eine leere Überlebensliste und eine Löschliste vor
  2. Wenn sich das Inspektionsziel auf der Überlebensliste befindet, fügen Sie es der Löschliste hinzu.
  3. Wenn das Testziel nicht auf der Überlebensliste steht, fügen Sie es der Überlebensliste hinzu

(Ich denke, das ist genug, weil das, was ich tun möchte, nicht kompliziert ist)

Entwicklungsumgebung

Code

Classify.py


import os
import sys
import pandas as pd

def classify(path, target):
    lines = pd.read_csv(os.path.join(path, target), header=None)

    d = {}
    servived_dict = {}      #Was überlebt
    delete_dict = {}        #Ziel gelöscht werden

    # filename,crc32,Dateigröße{filename, (crc32, filesize)}Zu
    for i in range(len(lines)):
        (filename, crc32, filesize) = lines.values[i]
        d[filename] = (crc32, filesize)

    for key, value in d.items():
        if value in servived_dict.values():
            delete_dict[key] = value
        else:
            servived_dict[key] = value

    def output(full_path, dic):
        with open(full_path, mode='w') as f:
            for key in dic.keys():
                #Ich möchte nur, dass der vollständige Pfad der Datei gelöscht wird
                f.write(os.path.join(path, key) + "\n")

    output(os.path.join(path, "servived.txt"), servived_dict)
    output(os.path.join(path, "delete.txt"), delete_dict)

if __name__ == "__main__":
    full_path = sys.argv[1]
    classify(os.path.dirname(full_path), os.path.basename(full_path))

In der ersten for-Anweisung wird das Inspektionsziel in {Dateiname, (crc32, Dateigröße)} konvertiert, damit es später problemlos verarbeitet werden kann. Wenn Sie es nicht zu einem Taple machen, müssen Sie überprüfen, ob CRC32 und Dateigröße enthalten sind, also ist es ein kleiner Mist. Obwohl saved_dict von Bedeutung ist, ist es auch dann nutzlos, wenn es in saved.txt ausgegeben wird, sodass eine Ausgabe nicht erforderlich ist (obwohl dies beim Debuggen hilfreich war).

Nachwort

Es ist immer noch Pythonista, also denke ich, dass es mit einer festgelegten Operation enden wird, aber diesmal. Als nächstes folgt der Löschvorgang unter Bezugnahme auf die Datei delete.txt, die in jedem Jahr / Monat-Ordner generiert wurde (was soll ich schreiben ...)

Recommended Posts

Sortieren von Bilddateien mit Python (2)
Sortieren von Bilddateien mit Python (3)
Bilddateien mit Python sortieren
Bildverarbeitung mit Python
Bildbearbeitung mit Python OpenCV
Sortieren Sie große Dateien mit Python
Bildverarbeitung mit Python (Teil 1)
Tweet mit Bild in Python
Integrieren Sie PDF-Dateien in Python
Bildverarbeitung mit Python (3)
TXT-Dateien mit Python lesen
[Python] Bildverarbeitung mit Scicit-Image
Schneiden Sie ein Bild mit Python aus
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Extrahieren Sie Zip-Dateien rekursiv mit Python
Bearbeiten von EAGLE .brd-Dateien mit Python
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
[Python] POST-WAV-Dateien mit Anforderungen [POST]
Mit OpenSSL mit Python 3 verschlüsselte Dateien entschlüsseln
Die Bildverarbeitung mit Python 100 klopft an die Binärisierung Nr. 3
Lassen Sie uns mit Python Image Scraping durchführen
Behandeln Sie Excel-CSV-Dateien mit Python
Lesen Sie Dateien parallel zu Python
Finden Sie Bildähnlichkeit mit Python + OpenCV
100 Bildverarbeitung mit Python Knock # 2 Graustufen
Sende Bild mit Python und speichere mit PHP
Sortieren von Dateien nach Namenskonvention mit Python
Erzeugung von Verlaufsbildern mit Python [1] | np.linspace
[Python] Google Mail mit Python senden: Senden Sie eins nach dem anderen mit mehreren angehängten Bilddateien
[Python] Mit OpenCV können Sie problemlos Bilddateien mit Seriennummern lesen
Grundlagen der binärisierten Bildverarbeitung durch Python
Bildverarbeitung mit Python 100 Knock # 10 Medianfilter
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
FizzBuzz in Python3
Scraping mit Python
Spielen Sie eine Audiodatei von Python mit Interrupt ab
Python-Bildverarbeitung
HTML-Mail mit Bild zum Senden mit Python
Statistik mit Python
Scraping mit Python
Erstellen Sie mit Python + PIL ein Dummy-Image.
Python mit Go
100 Bildverarbeitung mit Python Knock # 8 Max Pooling
Einführung in das Auffüllen von Python-Bildern Auffüllen von Bildern mit ImageDataGenerator
Twilio mit Python
Spielen Sie mit 2016-Python
Mit openssl verschlüsselte Dateien werden mit openssl aus Python entschlüsselt
AES256 mit Python
Verwenden Sie die Verschlüsselung der Verschlüsselungsbibliothek mit dem Python-Image von Docker
Bildverarbeitung mit Python & OpenCV [Tonkurve]
Getestet mit Python
Bildverarbeitung mit Python 100 Knock # 12 Bewegungsfilter
Python beginnt mit ()
Bildaufnahme von der Kamera mit Python + OpenCV
[Python] Ich habe einen Bildbetrachter mit einer einfachen Sortierfunktion erstellt.
Lesen und Schreiben von JSON-Dateien mit Python
Laden Sie mit Python Dateien im Web herunter
[Easy Python] Lesen von Excel-Dateien mit openpyxl
mit Syntax (Python)
Bingo mit Python