Tri des fichiers par convention de dénomination à l'aide de Python

Trier par partie de la convention de dénomination

test.csv


001_0004_1.bmp
002_0004_1.bmp
003_0004_1.bmp
004_0003_1.bmp
005_0003_1.bmp
006_0003_1.bmp
007_0002_1.bmp
008_0002_1.bmp
009_0002_1.bmp
010_0001_1.bmp
011_0001_1.bmp
012_0001_1.bmp

Supposons que vous ayez un nom de fichier comme le contenu de test.csv ci-dessus. Le fichier BMP décrit dans ce CSV a les conventions de dénomination suivantes (conventions de dénomination créées de manière appropriée),

FFF_TTTT_C.bmp

--F: numéro de cadre --T: une sorte d'index --C: Index de la chose dans l'image --Les nombres et index ci-dessus sont séparés par'_ '

Le contenu du fichier CSV ci-dessus est trié par numéro d'image, Pour certaines raisons

** "Je veux trier par un index de T!" **

Je suppose le tri lorsqu'un tel cas sort.

Façon de penser

  1. Lisez le nom du fichier à partir du CSV
  2. Divisez le fichier lu avec "_ "
  3. Trier par quelques nombres divisés
  4. Façonnez la liste et la sortie au format CSV

J'ai créé un programme avec l'idée. Si vous recherchez attentivement, la fonction Ippatsu Dawn! Je sens que je peux le faire avec ...

Code source

##
# coding:utf-8
##

import csv
import pprint as pp

##
#Trier par convention de dénomination
# inputlist:Liste à trier
# key_number:Spécifiez le nombre de chaînes à trier
# key_Renvoie une liste vide si le nombre dépasse le nombre de divisions dans la convention de dénomination
##
def Sort_by_Key(input_list,key_number,split='_'):
    #Divisez le nom du fichier et convertissez-le au format tapple
    file_sort = []
    for t in input_list:
        sp_t = t.split(split)
        tap_sp_t = tuple(sp_t)
        file_sort.append(tap_sp_t)

    if len(file_sort[0]) < key_number:
        return []

    #Trier
    file_sort.sort(key=lambda t: t[key_number])

    #Collez le grand écart ensemble
    output_file = []
    for f in file_sort:
        s = split.join(f)
        output_file.append(s)

    return output_file

def main():
    #Lecture de fichiers
    op = open('test.csv','r')
    tpp = csv.reader(op)

    #Extraire uniquement la première ligne de csv
    test_file = []
    for t in tpp:
        test_file.append(t[0])

    op.close()

    #Commande originale
    print("before")
    pp.pprint(test_file)

    file_save = Sort_by_Key(test_file,1)

    print("\nafter")
    pp.pprint(file_save)

    #Conversion pour stockage
    row = len(file_save)
    col = 1
    SaveList = [file_save[col * i: col * (i + 1)] for i in range(row)]

    wp = open('output.csv','w')
    writer = csv.writer(wp, lineterminator='\n')
    writer.writerows(SaveList)
    wp.close()

if __name__=="__main__":
    main()

output.csv


010_0001_1.bmp
011_0001_1.bmp
012_0001_1.bmp
007_0002_1.bmp
008_0002_1.bmp
009_0002_1.bmp
004_0003_1.bmp
005_0003_1.bmp
006_0003_1.bmp
001_0004_1.bmp
002_0004_1.bmp
003_0004_1.bmp

Site de référence

[1] Lecture et écriture de CSV avec Python [2] Introduction aux listes, taples et dictionnaires Python [3] Python: à propos du tri des objets [4] Concaténer / scinder des chaînes de caractères avec Python: join (), split () [5] convert a flat list to list of list in python [6] Bibliothèque: pprint

Recommended Posts

Tri des fichiers par convention de dénomination à l'aide de Python
Tri des fichiers image avec Python (2)
Tri des fichiers image avec Python (3)
Convention de dénomination Python (à partir de PEP8)
Trouver la fonction de distribution cumulative par tri (version Python)
Tri de base en Python
Mémo de visualisation par Python
Traitement de la communication par Python
Re: Tri de la puissance humaine [Python]
Réponse de Beamformer par python
[Python] Tri des données Numpy
Python - Marquage des fichiers MP3
[Python] Lecture de fichiers CSV
[Python] Envoyer gmail avec python: envoyez un par un avec plusieurs fichiers image en pièce jointe
Reconnaissance vocale par Python MFCC
API Web EXE par Python
Programme de formation des nouveaux arrivants par Python
Paramétrage par le configurateur python
Pin python géré par conda
Trier de gros fichiers avec python
Techniques de tri en Python
Extraction de mots-clés par MeCab (python)
Séparez les nombres par 3 chiffres (python)
Modèle de commutation de Markov par Python
Lire des fichiers .txt avec Python
Traitement d'image par python (Pillow)
Décompressez plusieurs fichiers compressés (Python)
Python lancé par des programmeurs C
Jugement de la plateforme (OS) par Python
Trier par date en python