Hitta filer efter namn på hårddisken med Python

Innehållsförteckning

I denna handledning kommer vi att se hur man implementerar ett kort Python -program som tar hand om att söka efter filer som innehåller ett visst namn, i den katalog som vi skickar till den (om vi inte skickar den till en katalog, kommer den att söka från den aktuella katalogen). Vi kommer att se att det är en mycket enkel kod att göra och förstå.

NoteraExemplet som jag ska lägga till i den här självstudien kommer jag att köra i Python 3.X.

Först lämnar jag hela koden och nedan kommer den att förklaras del för del:

 import sys, os search = "solvetic" katalog = os.getcwd () totalt = 0 if (len (sys.argv)> 1): if (inte os.path.isdir (sys.argv [1])): skriv ut (sys.argv [1], "identifieras inte som katalog") sys.exit (1) directory = sys.argv [1] för root, dir, filer i os.walk (katalog): för fil i filer: if ( sök i file.lower ()): print (root + "\" + fil) totalt + = 1 utskrift ("Totalt finns", totalt, "filer med", sök) 
Nu ska vi börja förklara koden, om du redan vet något om Python har du säkert redan förstått det för det mesta.

För att genomföra detta program kommer vi att använda os -modul att interagera med operativsystemet och sys för att styra inmatningen av argumentet och eventuell avslutning utan abruptitet. De är moduler som vi redan har i Python, så vi behöver inte installera något annat.

 importera sys, os 
Därefter kommer vi att definiera en variabel som kallas sökning med ordet som vi ska söka (vi kan ta emot den som en parameter, men i det här fallet kommer den att vara solvetisk), en annan kallad katalog som innehåller sökvägen från där vi ska börja (som standard den aktuella katalogen från vilken vi kör programmet). Och den sista variabeln som vi ser totalt är att hålla reda på de filer vi hittar.
 search = "solvetic" katalog = os.getcwd () totalt = 0 
Nu ska vi kontrollera om vi har fått några parametrar och om så är fallet kontrollerar vi om de har gett oss en katalog, om det är sant, sparar vi katalogen i variabeln "katalog", om inte, förblir variabeln densamma, det vill säga med den aktuella katalogen.
 if (len (sys.argv)> 1): if (inte os.path.isdir (sys.argv [1])): print (sys.argv [1], "identifieras inte som katalog") sys.exit ( 1) katalog = sys.argv [1] 
Nästa steg är en loop, funktionen os.walk (katalog) kommer att läsa namnen på filerna rekursivt, det vill säga det kommer att gå igenom filerna och katalogerna från katalogen som vi skickar till den. Då är det enda som intresserar oss i det här exemplet att visa filerna som innehåller ordet solvetic, så vi går igenom filerna och kontrollerar om de har det sökte ordet, för att också hitta de filer som innehåller ordet med någon stor bokstav vi använder den lägre funktionen, att allt det gör är att lämna hela strängen i gemener. Eftersom vi är intresserade av att se hela sökvägen till filen, sammanfogar vi rotvariabeln med filen, eftersom root returnerar den katalog som vi har läst.
 för root, dir, filer i os.walk (katalog): för fil i filer: if (sök i file.lower ()): print (root + "\" + fil) totalt + = 1
Strax innan programmet avslutas kommer det att måla en rad på skärmen med antalet filer som finns med namnet solvetic.
 print ("Totalt finns det", totalt, "filer med", sök) 
Nu ska jag lägga några skärmdumpar av programmets körning, sedan körningen utan parameter, det vill säga det gör sökningen från den aktuella katalogen:

Följande att söka från disk C i Windows:

Och slutligen en fångst när något som inte är en katalog skickas som en parameter:

Och handledningen är över, om du är intresserad av att undersöka modulen ytterligare, här är en länk till den officiella dokumentationen, den är på engelska.

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave