martedì 28 novembre 2017

Creare lista files contenuti in una cartella.

Si vuole creare una lista bidimensionale [ percorso , nome file ] di tutti i file che hanno una determinata estensione contenuti in una cartella.

Nell'esempio si lavora con 2 percorsi differenti: nel primo vengono analizzate anche le sottocartelle, nel secondo si prendono in considerazione solo i files presenti nella cartella.


libreria python utilizzata: os

Il programma stampa a video la lista files.

#---- Import moduli ----------------------
import os

#-- Definizione variabili globali - Costanti fisse --
PATH       = r"<path1>"   # Percorso dei files
PATH2      = r"<path2>"   # Percorso2 dei files (senza sottocartelle)
ESTENSIONE = ".xlsm"      # Estensione dei file da considerare

lista_files = []

#----------------------------------------------------------------
# crea_lista_files : Crea la lista dei file dentro la cartella
#----------------------------------------------------------------
# input : Nulla
# return: lista_files (globale)
#----------------------------------------------------------------
def crea_lista_files():

    global lista_files   

    lista_files = []

    # os.walk esplode anche sottocartelle
    for root, dirs, files in os.walk(PATH):
        
        for file in files:

            if file.endswith(ESTENSIONE):
                lista_files.append((root, file))

    #Lavora solo sulla cartella
    for file in os.listdir(PATH2):
        if file.endswith(ESTENSIONE):
            lista_files.append((PATH2, file))

#----------------------------------------------------------------
# INIZIO PROGRAMMA
#----------------------------------------------------------------
if __name__=='__main__':

    crea_lista_files()

    l = len(lista_files)
    
    for i in range(0, l):
        print(i, lista_files[i][0], lista_files[i][1])
                
Nota: ho utilizzato la funzione in un programma per l'analisi di dati contenuti dentro a tutti i files Excel presenti in una condivisione di rete.

Nessun commento:

Posta un commento