Finn filer etter navn på harddisken med Python

Innholdsfortegnelse

I denne opplæringen skal vi se hvordan du implementerer et kort Python -program som tar seg av å søke etter filer som inneholder et bestemt navn, i katalogen som vi sender til den (hvis vi ikke sender den en katalog, søker den fra den nåværende katalogen). Vi vil se at det er en veldig enkel kode å lage og forstå.

MerkEksemplet jeg skal sette i denne opplæringen skal jeg kjøre i Python 3.X.

Først forlater jeg hele koden, og nedenfor blir det forklart del for del:

 import sys, os search = "solvetic" directory = os.getcwd () total = 0 if (len (sys.argv)> 1): if (not os.path.isdir (sys.argv [1])): print (sys.argv [1], "ikke gjenkjent som katalog") sys.exit (1) directory = sys.argv [1] for root, dir, filer i os.walk (katalog): for fil i filer: hvis ( søk i file.lower ()): print (root + "\" + fil) totalt + = 1 utskrift ("Totalt er det", totalt, "filer med", søk) 
Nå skal vi begynne å forklare koden, hvis du allerede vet noe om Python, har du sikkert allerede forstått det for det meste.

For å utføre dette programmet skal vi bruke os -modul å samhandle med operativsystemet, og sys å kontrollere oppføringen av argumentet og mulig avslutning uten bråhet. De er moduler som vi allerede har i Python, så vi trenger ikke å installere noe annet.

 import sys, os 
Deretter skal vi definere en variabel som heter søk med ordet vi skal søke (vi kan motta det som en parameter, men i dette tilfellet vil det for eksempel være solvetisk), en annen kalt katalog som vil inneholde banen fra der vi skal starte (som standard er den nåværende katalogen der vi kjører programmet). Og den siste variabelen vi ser totalt er å holde oversikt over filene vi finner.
 search = "solvetic" katalog = os.getcwd () totalt = 0 
Nå skal vi sjekke om vi har mottatt noen parametere, og i så fall sjekker vi om de har gitt oss en katalog, hvis den er sann, lagrer vi katalogen i variabelen "katalog", hvis ikke, forblir variabelen den samme, det vil si med den nåværende katalogen.
 if (len (sys.argv)> 1): if (ikke os.path.isdir (sys.argv [1])): print (sys.argv [1], "ikke gjenkjent som katalog") sys.exit ( 1) katalog = sys.argv [1] 
Det neste trinnet er en sløyfe, funksjonen os.walk (katalog) vil lese navnene på filene rekursivt, det vil si at den vil gå gjennom filene og katalogene fra katalogen som vi sender til den. Da er det eneste som interesserer oss i dette eksemplet å vise filene som inneholder ordet solvetic, så vi vil gå gjennom filene og sjekke om de har det søkte ordet, for også å finne filene som inneholder ordet med en stor bokstav vi bruker den nedre funksjonen, at alt den gjør er å la hele strengen ligge i små bokstaver. Siden vi er interessert i å se hele banen til filen, kobler vi sammen rotvariabelen med filen, siden root returnerer katalogen vi har lest.
 for root, dir, filer i os.walk (katalog): for fil i filer: if (søk i file.lower ()): print (root + "\" + fil) totalt + = 1
Like før programmet avsluttes, vil det male på skjermen en linje med antall filer som er funnet med navnet solvetic.
 print ("Totalt er det", totalt, "filer med", søk) 
Nå skal jeg sette noen skjermdumper av kjøringen av programmet, deretter utførelsen uten parameter, det vil si at den vil gjøre søket fra den nåværende katalogen:

Følgende for å søke fra disk C i Windows:

Og til slutt en fangst når noe som ikke er en katalog blir sendt som en parameter:

Og opplæringen er over, hvis du er interessert i å undersøke modulen nærmere, her er en lenke til den offisielle dokumentasjonen, den er på engelsk.

Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng
wave wave wave wave wave