Trova tutti i file in una directory
Come possiamo trovare un file su un computer con Python? Ci sono molti modi per farlo, iniziamo con il primo.
Utilizzo del sistema operativo.listdir ()
Devi solo importare il modulo os e puoi usare il sistema operativo.funzione listdir per poter vedere tutto il file in una directory. In Python 3, se non metti nulla come argomento nella parentesi rotonda, ti restituirà un elenco di tutti i file e le cartelle della directory corrente., In Pyton 2 è necessario utilizzare il sistema operativo.listdir(“.”) per vedere i file nella directory corrente.
# First tryimport osf_list = os.listdir()
Se si desidera una particolare directory è necessario inserire il percorso come argomento.
os.listdir("C:\\documents")
In questo esempio, è possibile guardare i file nella cartella documenti del disco rigido C:
os.listdir (): ottieni file nella directory corrente (Python 3)
Il modo più semplice per avere il file nella directory corrente in Python 3 è questo., È davvero semplice, usa il modulo os e la funzione listdir () e avrai il file in quella dir (e le eventuali cartelle che si trovano nella dir, ma non avrai il file nella sottodirectory, per questo puoi usare walk – ne parlerò più tardi).
import osarr = os.listdir()arr
Ottenere il nome completo del percorso
Come hai notato, non hai il percorso completo del file nel codice sopra. Se è necessario avere il percorso assoluto, è possibile utilizzare un’altra funzione del sistema operativo.modulo percorso chiamato _getfullpathname, mettendo il file che si ottiene dal sistema operativo.listdir () come argomento., Ci sono altri modi per avere il percorso completo, come controlleremo in seguito (ho sostituito, come suggerito da mexmex, _getfullpathname con abspath).
Ottieni il nome completo del percorso di un tipo di file in tutte le sottodirectory con walk
Lo trovo molto utile per trovare cose in molte directory e mi ha aiutato a trovare un file di cui non ricordavo il nome:
import osthisdir = os.getcwd()for r, d, f in os.walk(thisdir): for file in f: if ".docx" in file: print(os.path.join(r, file))
os.listdir (): ottieni i file nella directory corrente (Python 2)
import osarr = os.listdir('.')arr# output:
Per salire nell’albero delle directory
# method 1x = os.listdir('..')# method 2x = os.listdir('/')
ottieni file: os.,listdir () in una particolare directory (Python 2 e 3)
import osarr = os.listdir('F:\\python')arr# output:
Ottenere i file di una particolare sottodirectory con il sistema operativo.listdir ()
import osx = os.listdir("./content")
os.piedi(‘.’)- directory corrente
import osarr = next(os.walk('.'))arr# output:
modulo glob-tutti i file
import globprint(glob.glob("*"))# output:
successivo(os.piedi(‘.’)) e os.percorso.per maggiori informazioni clicca qui.walk (‘F:’) – ottenere il percorso completo-lista comprensione
# output#
os.walk-get full path-tutti i file in sub dirs
x = x# output#
os.,listdir() – prendi solo il file txt
arr_txt = print(arr_txt)# output:
glob – ottenere solo il file txt
import globx = glob.glob("*.txt")x# output:
l’Utilizzo di glob per ottenere il percorso completo del file
Se ho bisogno il percorso assoluto del file:
l’utilizzo di Altri glob
Se io voglio che tutti i file nella directory:
x = glob.glob("*")
l’Utilizzo di os.percorso.isfile per evitare le directory nella lista *
Utilizzando pathlib from (Python 3.4)
Se si desidera utilizzare la comprensione della lista
flist =
Ottenere tutti e solo i file con sistema operativo.,camminare
Ottenere solo i file con next e camminare in una directory
import osx = next(os.walk('F://python'))print(x)################################### output:
Ottenere solo le directory con next e camminare in una directory
import osnext(os.walk('F://python')) # for the current dir use ('.')# output:
**Ottenere tutti i nomi sottodir con walk
os.scandir () da python 3.5 su
Ex. 1: Quanti file ci sono nelle sottodirectory?
In questo esempio, cerchiamo il numero di file che sono inclusi in tutta la directory e le sue sottodirectory.
Es.2: Come copiare tutti i file da una dir a un’altra?,
Uno script per fare ordine nel computer trovare tutti i file di un tipo (default: pptx) e copiarli in una nuova cartella.
Es.3: Come ottenere tutti i file in un file txt
nel caso In cui si desidera creare un file txt con tutti i nomi dei file:
Esempio: creare un txt con tutti i nomi di file nel vostro hard disk
Tutti i file di C:\\ in un file di testo
Questa è una versione più breve del precedente codice. Cambia la cartella in cui iniziare a trovare i file se devi iniziare da un’altra posizione., Questo codice genera un file di testo di 50 mb sul mio computer con qualcosa di meno di 500.000 righe con file con il percorso completo.
import oswith open("file.txt", "w", encoding="utf-8") as filewrite: for r, d, f in os.walk("C:\\"): for file in f: filewrite.write(f"{r + file}\n")