Il modo migliore per cercare attraverso la struttura delle directory

1

Sto lavorando su un programma python che organizza una libreria musicale. Il programma fondamentalmente mi aiuterà a rilevare nomi di file o directory errati, tag FLAC errati o file sconosciuti / superflui. Si assicurerà inoltre che i file FLAC siano denominati correttamente in base ai loro tag FLAC ecc.

La struttura I though di appare come segue ( / è la radice della libreria musicale):

/
    [category]
        [artist]
            [year] - [release]
                [track number] - [title].flac
                [...]
                [artist] - [release].jpg
                [artist] - [release].cue
                [artist] - [release].log
        Various Artists
            [artist_0 [, artist_1 [, ...]]] - [year] - [release]
                [track number] - [title].flac
                [...]
                [artist_0 [, artist_1 [, ...]]] - [release].jpg
                [artist_0 [, artist_1 [, ...]]] - [release].cue
                [artist_0 [, artist_1 [, ...]]] - [release].log
        [...]
    [...]

Ho iniziato a scrivere del codice ma molto presto ho notato che questo non è un problema troppo facile da risolvere. Ho scritto 4 funzioni, category , artist , release e file , che sono chiamate di conseguenza durante l'iterazione attraverso tutte le directory. Fondamentalmente come quello (pseudo codice):

func category:
    do some checks
    for each file in this directory:
        artist(file)

func artist:
    do some checks
    for each file in this directory:
        release(file)

func release:
    do some checks
    for each file in this directory:
        file(file)

func file:
    do some checks (FLAC tags etc)

for each file in the root directory:
    category(file)

Ora mi chiedo, esistono algoritmi o tecniche conosciute che potrebbero essere utilizzati per risolvere questo problema in modo elegante?

    
posta watain 31.03.2014 - 21:53
fonte

1 risposta

2

Non c'è assolutamente nulla di sbagliato nel tuo approccio.

Si noti che se la parte "do some checks" era la stessa in ogni funzione, quindi in effetti si potrebbe semplificare e avere una singola funzione che si chiama in modo ricorsivo nelle sottocartelle. Forse questo è quello che avevi in mente ... Ma questo non è il caso in quanto ogni funzione è chiaramente diversa.

Dato che stai usando Python, potresti voler controllare il modulo os , esp. os.walk (), che può aiutare a superare la struttura della directory.

    
risposta data 31.03.2014 - 23:09
fonte

Leggi altre domande sui tag