Tri des fichiers image avec Python (2)

Préface

Dernière fois, j'ai fait jusqu'à présent pour trier un grand nombre de fichiers image dans des dossiers année / mois. À ce moment-là, les fichiers CSV suivants ont été générés dans chaque dossier comme indices pour supprimer les fichiers en double.

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

À partir de la gauche, le nom du fichier, CRC32 et la taille du fichier sont affichés, et les fichiers avec la même taille de fichier que CRC32 seront presque certainement le même fichier, ils seront donc supprimés. En parlant du fichier ci-dessus, les 2ème et 4ème lignes sont dupliquées, je voudrais donc les diviser en 2 groupes comme suit.

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

L'idée est simplement «supprimer la liste ← liste originale en double» et «liste de survie ← liste originale à supprimer», mais j'ai essayé divers malaxages mais je n'ai pas pu parvenir à une implémentation convaincante. Alors cette fois

  1. Préparez une liste de survie et une liste de suppression vides
  2. Si la cible d'inspection se trouve dans la liste de survie, ajoutez-la à la liste de suppression.
  3. Si la cible de test ne figure pas dans la liste de survie, ajoutez-la à la liste de survie

(Je pense que cela suffit car ce que je veux faire n'est pas compliqué)

Environnement de développement

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 = {}      #Ce qui survit
    delete_dict = {}        #Cible à supprimer

    # filename,crc32,taille du fichier{filename, (crc32, filesize)}À
    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():
                #Je veux seulement que le chemin complet du fichier soit supprimé
                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))

Dans la première instruction for, la cible d'inspection est convertie en {filename, (crc32, filesize)} afin qu'elle puisse être manipulée facilement plus tard. Si vous n'en faites pas un taple, vous devrez vérifier si CRC32 et la taille du fichier sont inclus, donc c'est une petite merde. De plus, bien que save_dict ait une signification, il est inutile même s'il est sorti vers saved.txt, donc la sortie est inutile (bien que cela ait été utile lors du débogage)

Épilogue

C'est toujours Pythonista, donc j'ai l'impression que cela se terminera par une opération set, mais cette fois. Vient ensuite le processus de suppression en se référant au fichier delete.txt généré dans chaque dossier année / mois (que dois-je écrire ...)

Recommended Posts

Tri des fichiers image avec Python (2)
Tri des fichiers image avec Python (3)
Tri des fichiers image avec Python
Traitement d'image avec Python
Édition d'image avec python OpenCV
Trier de gros fichiers avec python
Traitement d'image avec Python (partie 1)
Tweet avec image en Python
Intégrez des fichiers PDF avec Python
Traitement d'image avec Python (3)
Lire des fichiers .txt avec Python
[Python] Traitement d'image avec scicit-image
Découpez une image avec python
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Extraire récursivement des fichiers zip avec python
Manipulation des fichiers EAGLE .brd avec Python
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
[Python] Fichiers wav POST avec requêtes [POST]
Décrypter les fichiers cryptés avec OpenSSL avec Python 3
Traitement d'image avec la binarisation Python 100 knocks # 3
Faisons du scraping d'images avec Python
Gérer les fichiers Excel CSV avec Python
Lire des fichiers en parallèle avec Python
Trouver la similitude d'image avec Python + OpenCV
100 traitement d'image par Python Knock # 2 Échelle de gris
Envoyer l'image avec python et enregistrer avec php
Tri des fichiers par convention de dénomination à l'aide de Python
Génération d'images dégradées avec Python [1] | np.linspace
[Python] Envoyer gmail avec python: envoyez un par un avec plusieurs fichiers image en pièce jointe
[Python] Lecture facile des fichiers image du numéro de série avec OpenCV
Bases du traitement d'images binarisées par Python
Traitement d'image par Python 100 knock # 10 filtre médian
[AWS] Utilisation de fichiers ini avec Lambda [Python]
FizzBuzz en Python3
Grattage avec Python
Lire un fichier audio à partir de Python avec interruption
traitement d'image python
mail html avec image à envoyer avec python
Statistiques avec python
Grattage avec Python
Créez une image factice avec Python + PIL.
Python avec Go
100 traitement d'image avec Python Knock # 8 Max Pooling
Introduction au remplissage d'image Python Remplissage d'image à l'aide d'ImageDataGenerator
Twilio avec Python
Jouez avec 2016-Python
Décrypter les fichiers cryptés avec openssl depuis python avec openssl
AES256 avec python
Utiliser le chiffrement de la bibliothèque de chiffrement avec l'image Python de Docker
Traitement d'image avec Python et OpenCV [Tone Curve]
Testé avec Python
Traitement d'image par Python 100 knock # 12 motion filter
python commence par ()
Acquisition d'images depuis une caméra avec Python + OpenCV
[Python] J'ai créé une visionneuse d'images avec une fonction de tri simple.
Lire et écrire des fichiers JSON avec Python
Télécharger des fichiers sur le Web avec Python
[Easy Python] Lecture de fichiers Excel avec openpyxl
avec syntaxe (Python)
Bingo avec python