Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Python] Usare glob con più estensioni

    ciao!

    per listare tutti i file con una certa estensione dentro ad una directory, ho usato glob.glob:
    codice:
    for infile in glob.glob(dir + "*.png"):
        # DO STUFF
    però vorrei allargare la ricerca dei file anche ad altre estensioni.
    ad esempio vorrei cercare tutti i png, jpeg, jpg.
    come posso fare??

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    una cosa tipo questa?
    codice:
    extensions = ["*.png", "*.jpeg", "*.jpg"]
    all_files = [glob.glob(ext) for ext in extensions]

  3. #3
    ciao clasku!

    allora, nella directory ci stanno tre immagini: due jpg e una png.
    sto provando il codice che mi hai dato:
    codice:
    dir = "/home/matte/1_TEST/"
    extensions = ["*.png", "*.jpeg", "*.jpg"]
    all_files = [glob.glob(dir + ext) for ext in extensions]
    print(all_files)
    l'output è questo:
    codice:
    [['/home/matte/1_TEST/IMG2.png'], [], ['/home/matte/1_TEST/IMG.jpg', '/home/matte/1_TEST/TEST_JPG.jpg']]
    quindi, le immagini nel trova tutte.
    più c'è una voce vuota, e non capisco il perchè.

    sennò ho trovato anche questo che pare funzionare:
    codice:
    extensions = [".png", ".jpeg", ".jpg"]
    for infile in os.listdir(dir):
        ext = os.path.splitext(infile)[1]
        if ext.lower() in extensions:
            print(dir + infile)
    ovviamente non usa glob, e controlla l'estensione del file ad ogni iterazione.

    che ne dici??

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    la lista vuota è il glob per *.jpeg: glob restituisce sempre una lista, vuota se non trova corrispondenza

    se vuoi, una volta che hai la lista dei file in forma di "lista di liste", puoi fare un'altra list comprehension per trasformarla in una lista semplice
    codice:
    lista = [elem for sublista in all_files for elem in sublista]
    il secondo codice che hai messo non mi piace molto, oltre che credo sia più lento (ma questo valutalo tu, se vuoi)

  5. #5
    in effetti sembra più veloce.
    alla fine ho seguito il tuo codice (anche perchè di python non sono proprio esperto):
    codice:
    extensions = ["*.png", "*.jpeg", "*.jpg"]
    allFiles = [glob.glob(dir + ext) for ext in extensions]
    lista = [elem for sublista in allFiles for elem in sublista]
    for infile in lista:
        try:
            file, ext = os.path.splitext(infile)
            im = Image.open(infile)
            im.thumbnail(size, Image.ANTIALIAS)
            im.save(file + "_R" + ext)
            print(file)
        except IOError as e:
            print(e)
    questo ha funzionato alla perfezione!
    grazie per la dritta!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.