Vind bestanden op naam op de harde schijf met Python

Inhoudsopgave

In deze tutorial gaan we zien hoe een kort Python-programma te implementeren dat zorgt voor het zoeken naar bestanden die een bepaalde naam bevatten, binnen de map die we eraan doorgeven (als we er geen map aan doorgeven, zoekt het vanuit de huidige map). We zullen zien dat het een heel eenvoudige code is om te maken en te begrijpen.

OpmerkingHet voorbeeld dat ik in deze tutorial ga plaatsen, ga ik uitvoeren in Python 3.X.

Eerst laat ik de volledige code achter en hieronder wordt het deel voor deel uitgelegd:

 import sys, os search = "solvetic" directory = os.getcwd () totaal = 0 if (len (sys.argv)> 1): if (niet os.path.isdir (sys.argv [1])): print (sys.argv [1], "niet herkend als directory") sys.exit (1) directory = sys.argv [1] voor root, dir, bestanden in os.walk (directory): voor bestand in bestanden: if ( zoek in file.lower ()): print (root + "\" + file) total + = 1 print ("In totaal zijn er", totaal, "bestanden met", zoeken) 
Nu gaan we beginnen met de uitleg van de code, als je al iets over Python weet, heb je het zeker al grotendeels begrepen.

Om dit programma uit te voeren, gebruiken we de os-module om te communiceren met het besturingssysteem, en de sys om de invoer van het argument en mogelijke exit te controleren zonder abruptheid. Het zijn modules die we al in Python hebben, dus we hoeven niets anders te installeren.

 import sys, os 
Vervolgens gaan we een variabele met de naam zoeken definiëren met het woord dat we gaan zoeken (we zouden het als een parameter kunnen ontvangen, maar in dit geval zal het voor het voorbeeld oplosbaar zijn), een andere genaamde directory die het pad zal bevatten van waar we gaan beginnen (standaard de huidige map van waaruit we het programma uitvoeren). En de laatste variabele die we in totaal zien, is het bijhouden van de bestanden die we vinden.
 search = "solvetic" directory = os.getcwd () totaal = 0 
Nu gaan we controleren of we parameters hebben ontvangen en als dat zo is, controleren we of ze ons een directory hebben gegeven, als het waar is, slaan we de directory op in de variabele "directory", zo niet, dan blijft die variabele hetzelfde, dat wil zeggen, met de huidige map.
 if (len (sys.argv)> 1): if (niet os.path.isdir (sys.argv [1])): print (sys.argv [1], "niet herkend als map") sys.exit ( 1) map = sys.argv [1] 
De volgende stap is een lus, de os.walk (directory) functie zal de namen van de bestanden recursief lezen, dat wil zeggen, het zal door de bestanden en mappen gaan van de map die we eraan doorgeven. Dan is het enige dat ons in dit voorbeeld interesseert, de bestanden te tonen die het woord solvabel bevatten, dus we zullen de bestanden doornemen en controleren of ze het gezochte woord hebben, om ook de bestanden te vinden die het woord met een hoofdletter bevatten we gebruiken de onderste functie, zodat het alleen de hele tekenreeks in kleine letters laat. Omdat we geïnteresseerd zijn in het volledige pad van het bestand, voegen we de root-variabele samen met het bestand, omdat root de directory retourneert die we hebben gelezen.
 voor root, dir, bestanden in os.walk (directory): voor bestand in bestanden: if (zoek in file.lower ()): print (root + "\" + bestand) totaal + = 1
Net voor het beëindigen van het programma, zal het op het scherm een ​​lijn tekenen met het aantal gevonden bestanden met de naam solvetic.
 print ("In totaal zijn er", totaal, "bestanden met", zoeken) 
Nu ga ik enkele screenshots van de uitvoering van het programma plaatsen, dan de uitvoering zonder parameter, dat wil zeggen, het zal de zoekopdracht uitvoeren vanuit de huidige map:

Het volgende om te zoeken vanaf schijf C in Windows:

En tot slot een opname wanneer iets dat geen directory is, als parameter wordt doorgegeven:

En de tutorial is voorbij, als je geïnteresseerd bent om de module verder te onderzoeken, hier is een link naar de officiële documentatie, deze is in het Engels.

Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven
wave wave wave wave wave