Python - List filer i en katalog

Python - List filer i en katalog

Noen ganger, mens du jobber med filer i Python, oppstår det et problem med hvordan du får alle filene i en katalog. I denne artikkelen vil vi dekke ulike metoder for hvordan liste alle filnavn i en katalog i Python.

Å utføre filoperasjoner er en må-ha ferdighet for programmerere. Å lære filoperasjoner ved hjelp av Python hjelper deg med å administrere filer, integrere filer med programmene dine, bygge programmer fra den virkelige verden, osv. Vi vil dekke det mest grunnleggende konseptet med å liste alle filer som er tilstede under en bestemt katalog.

Vi vil dekke to moduler og deres respektive funksjoner for denne opplæringen om å liste filnavn og detaljer i en katalog.

Hva er en katalog i Python?

En katalog, noen ganger kjent som en mappe, er en enhetsorganisasjonsstruktur i en datamaskins filsystem for lagring og lokalisering av filer eller flere mapper. Python støtter nå flere APIer for å liste kataloginnholdet. For eksempel kan vi bruke funksjonene Path.iterdir, os.scandir, os.walk, Path.rglob eller os.listdir.

Katalog i bruk: gfg

Filer i en katalog

Hvordan liste filer i en katalog i Python

Det er flere måter å liste alle filene i en katalog på. I denne artikkelen vil vi diskutere modulene nedenfor og deres funksjoner for å hente listen over filer i en katalog. Vi vil dekke totalt 5 måter med eksempler for å sjekke listen over filer i en katalog.

  1. Ved hjelp av OS-modul
  2. Ved hjelp av glob modul

List filer i en katalog ved hjelp av OS-modulen i Python

Vi kan bruke disse 3 metodene OS-modul , for å få en liste over filer i en katalog.

  • os.listdir() Metode
  • os.walk() Metode
  • os.scandir() Metode

Bruke os.listdir()-metoden for å få listen over filer

os.listdir() metoden henter listen over alle filer og kataloger i en spesifisert katalog. Som standard er det gjeldende katalog. Utover det første nivået av mapper, returnerer ikke os.listdir() noen filer eller mapper.

Syntaks : os.listdir(bane)

Parametere :

  • Sti : Banen til katalogen

Returtype : returnerer en liste over alle filer og kataloger i den angitte banen

Eksempel 1: Få en liste over alle filene i en katalog

I dette eksemplet importeres os-modulen for å samhandle med operativsystemet. Listdir-funksjonen brukes til å få en liste over alle filer og kataloger i den angitte banen (C://Users//Vanshi//Desktop//gfg). Resultatet skrives deretter ut, og viser navnene på filer og kataloger som er tilstede på den angitte plasseringen.

Python3




# import OS module> import> os> # Get the list of all files and directories> path> => ' C://Users//Vanshi//Desktop//gfg '> dir_list> => os.listdir(path)> print> (> 'Files and directories in ''> , path,> '' :'> )> # prints all files> print> (dir_list)>

Produksjon:

Eksempel 2: Få alle filene og ingen mapper

I dette eksemplet ber Python-programmet brukeren om en mappebane, og viser og skriver ut filene i den katalogen, ved å bruke os-modulen for kataloginteraksjon og filtrering av filer fra den innhentede listen.

Python3




import> os> print> (> 'Python Program to print list the files in a directory.'> )> Direc> => input> (r> 'Enter the path of the folder: '> )> print> (f> 'Files in the directory: {Direc}'> )> files> => os.listdir(Direc)> # Filtering only the files.> files> => [f> for> f> in> files> if> os.path.isfile(Direc> +> '/'> +> f)]> print> (> *> files, sep> => ' '> )>

Eksempel 3: Hent bare '.txt'-filer fra katalogen

I dette eksemplet bruker Python-skriptet os-modulen til å iterere gjennom filer i gjeldende katalog. Den skriver selektivt ut bare navnene på filer som slutter med .txt, og viser effektivt tekstfiler som finnes i katalogen.

Python3




# import OS> import> os> for> x> in> os.listdir():> > if> x.endswith(> '.txt'> ):> > # Prints only text file present in My Folder> > print> (x)>

Produksjon:

Bruke os.walk()-metoden for å få tilgang til filer i et katalogtre

OS.walk() genererer filnavn i et katalogtre. Denne funksjonen returnerer en liste over filer i en trestruktur. Metoden går gjennom alle katalogene i et tre.

Syntaks: os.walk(top, topdown, onerror, followlinks )

Parametere:

  • topp: Det er toppkatalogen du vil hente navnene på komponentfilene og mappene fra.
  • topdown: Angir at kataloger skal skannes ovenfra og ned når satt til True. Hvis denne parameteren er False, vil kataloger bli undersøkt ovenfra og ned.
  • en feil: Den gir en feilbehandler hvis det oppstår en feil
  • følgekoblinger : hvis satt til True, besøker mapper referert av systemkoblinger

Komme tilbake: returnerer navnet på hver fil og mappe i en katalog og hvilken som helst av dens underkataloger.

Eksempel: Få bare «.txt»-filer i en katalog

I dette eksemplet bruker Python-skriptet os-modulen til å gå gjennom filer i den angitte katalogen (C://Users//Vanshi//Desktop//gfg) og dens underkataloger. Den identifiserer og skriver ut navnene på filer med filtypen .txt, og fyller listevariabelen med de ønskede tekstfilene.

Python3




# import OS module> import> os> # This is my path> path> => ' C://Users//Vanshi//Desktop//gfg '> # to store files in a list> list> => []> # dirs=directories> for> (root, dirs,> file> )> in> os.walk(path):> > for> f> in> file> :> > if> '.txt'> in> f:> > print> (f)>

Produksjon:

Bruke os.scandir()-metoden for å liste filer i en katalog

os.scandir() er en effektiv versjon av os.listdir()-funksjonen. Den ble senere utgitt av Python og støttes for Python 3.5 og nyere.

Syntaks: os.scandir(bane)

Parameter:

  • Sti- Banen til katalogen.

Returtype: returnerer en iterator av os.DirEntry-objektet.

Eksempel: List alle filer og kataloger i en katalog.

I dette eksemplet bruker Python-skriptet os-modulen til å liste filer og kataloger i den angitte banen (C://Users//Vanshi//Desktop//gfg). Den bruker os.scandir() for å få en iterator av os.DirEntry-objekter som representerer oppføringer i katalogen.

Python3




# import OS module> import> os> # This is my path> path> => ' C://Users//Vanshi//Desktop//gfg '> # Scan the directory and get> # an iterator of os.DirEntry objects> # corresponding to entries in it> # using os.scandir() method> obj> => os.scandir()> # List all files and directories in the specified path> print> (> 'Files and Directories in '% s':'> %> path)> for> entry> in> obj:> > if> entry.is_dir()> or> entry.is_file():> > print> (entry.name)>

Produksjon:

List filer i en katalog ved å bruke glob-modulen i Python

De glob modul henter filer/banenavn som samsvarer med et spesifisert mønster. Nedenfor er måtene vi kan liste filer i en katalog ved å bruke glob-modulen:

  • glob() Metode
  • iglob() metode

Bruke glob()-metoden for å få alle filene i en katalog

Med glob , kan vi bruke jokertegn (*, ?, [ranges]) for å gjøre stihenting enklere og mer praktisk.

Syntaks: glob.glob(banenavn, *, rekursivt=False)

Parametere:

  • banenavn : Banen til katalogen eller mønsteret som skal samsvare.
  • tilbakevendende (Valgfritt): En boolsk parameter (standardverdi er satt til Falsk ) som indikerer om søket skal være rekursivt, dvs. om det skal inkludere underkataloger.

Returnerer:

  • Liste over samsvarende filstier

Eksempel: Python-filmatching og utskrift ved hjelp av glob()-metoden

Python3




import> glob> # This is my path> path> => 'C:UsersVanshiDesktopgfg'> # Using '*' pattern> print> (> ' Named with wildcard *:'> )> for> files> in> glob.glob(path> +> '*'> ):> > print> (files)> # Using '?' pattern> print> (> ' Named with wildcard ?:'> )> for> files> in> glob.glob(path> +> '?.txt'> ):> > print> (files)> # Using [0-9] pattern> print> (> ' Named with wildcard ranges:'> )> for> files> in> glob.glob(path> +> '/*[0-9].*'> ):> > print> (files)>

Produksjon:

Bruke iglob()-metoden for å liste filer i en katalog

iglob() metoden kan brukes til å skrive ut filnavn rekursivt hvis den rekursive parameteren er satt til True. Dette brukes for store kataloger da det er mer effektivt enn glob()-metoden.

Syntaks: glob.iglob(banenavn, *, rekursivt=False)

Parameter:

  • banenavn = Banen til katalogen.
  • rekursiv (Valgfri)= En boolsk parameter (standardverdi er satt til Falsk ) som indikerer om søket skal være rekursivt, dvs. om det skal inkludere underkataloger.

Returnerer: Iterator av samsvarende filstier

Eksempel: Skriv ut stier som samsvarer med det angitte mønsteret i en katalog.

I dette eksemplet bruker Python-skriptet glob-modulen til å finne og skrive ut stier som samsvarer med det angitte mønsteret (C:UsersVanshiDesktopgfg***.txt). Den bruker glob.iglob() for å returnere en iterator, som deretter brukes til å skrive ut banene til alle tekstfiler som finnes i den angitte katalogen og dens underkataloger.

Python3




import> glob> # This is my path> path> => 'C:UsersVanshiDesktopgfg***.txt'> # It returns an iterator which will> # be printed simultaneously.> print> (> ' Using glob.iglob()'> )> # Prints all types of txt files present in a Path> for> file> in> glob.iglob(path, recursive> => True> ):> > print> (> file> )>

Produksjon:

Dette er de 5 måtene du kan bruke for å få detaljer om filer og kataloger i en katalog. Python har gitt flere innebygde metoder som du kan bruke for å kjenne filene som finnes i en katalog. Denne opplæringen viste enkle metoder med eksempler for å forstå hvordan du får filoppføringer med os-modulen og glob-modulen.

Lignende lyder:

  • List filer i katalogen med utvidelse
  • List alle filer av en bestemt type i en katalog ved hjelp av Python
  • Liste ut kataloger og filer i Python
  • Få liste over filer i katalogen med størrelse
  • Filhåndtering i Python