W tym samouczku zobaczymy jak zaimplementować krótki program w Pythonie, który zajmie się wyszukiwaniem plików zawierających określoną nazwę, w katalogu, który mu przekazujemy (jeśli nie przekażemy mu katalogu, będzie przeszukiwał bieżący katalog). Zobaczymy, że jest to bardzo prosty kod do napisania i zrozumienia.
NotatkaPrzykład, który zamierzam umieścić w tym samouczku, uruchomię w Pythonie 3.X.
Najpierw zostawiam cały kod, a poniżej wyjaśnię go część po części:
import sys, os search = "solvetic" directory = os.getcwd () total = 0 if (len (sys.argv)> 1): if (not os.path.isdir (sys.argv [1])): drukuj (sys.argv [1], "nierozpoznawany jako katalog") sys.exit (1) katalog = sys.argv [1] dla root, dir, pliki w os.walk (katalog): dla pliku w plikach: if ( search in file.lower ()): print (root + "\" + plik) total + = 1 print ("W sumie są", total, "pliki z", szukaj)Teraz zaczniemy wyjaśnianie kodu, jeśli już wiesz coś o Pythonie, na pewno już to w większości zrozumiałeś.
Do realizacji tego programu użyjemy: moduł systemu operacyjnego do interakcji z systemem operacyjnym, a system kontrolować wejście argumentu i możliwe wyjście bez gwałtowności. Są to moduły, które już mamy w Pythonie, więc nie musimy instalować niczego więcej.
system importu, system operacyjnyNastępnie zdefiniujemy zmienną o nazwie search ze słowem, które będziemy wyszukiwać (możemy otrzymać je jako parametr, ale w tym przypadku na przykład będzie to solvetic), inną o nazwie katalog, która będzie zawierała ścieżkę skąd mamy zamiar zacząć (domyślnie bieżący katalog, z którego uruchamiamy program). A ostatnią zmienną, którą widzimy w sumie, jest śledzenie znalezionych plików.
search = katalog „solvetic” = os.getcwd () total = 0Teraz sprawdzimy, czy otrzymaliśmy jakieś parametry, a jeśli tak to sprawdzimy, czy podali nam katalog, jeśli to prawda, zapisujemy katalog w zmiennej "katalog", jeśli nie, ta zmienna pozostaje ta sama, to znaczy z bieżącym katalogiem.
if (len (sys.argv)> 1): if (nie os.path.isdir (sys.argv [1])): print (sys.argv [1], "nie rozpoznawany jako katalog") sys.exit ( 1) katalog = sys.argv [1]Następnym krokiem jest pętla, funkcja os.walk (katalog) będzie odczytywać nazwy plików rekurencyjnie, czyli przejdzie przez pliki i katalogi z katalogu, który do niej przekażemy. Wtedy jedyne, co nas interesuje w tym przykładzie, to pokazanie plików zawierających słowo solvetic, więc przejdziemy przez pliki i sprawdzimy, czy mają wyszukiwane słowo, aby znaleźć również pliki zawierające słowo z dużą literą używamy funkcji lower, która polega na pozostawieniu całego ciągu małymi literami. Ponieważ interesuje nas pełna ścieżka do pliku, łączymy zmienną root z plikiem, ponieważ root zwraca katalog, który przeczytaliśmy.
dla root, dir, plików w os.walk (katalog): dla pliku w plikach: if (szukaj w file.lower ()): print (root + "\" + plik) total + = 1Tuż przed zakończeniem programu narysuje na ekranie linię z liczbą znalezionych plików o nazwie solvetic.
print („W sumie są”, ogółem, „pliki z”, szukaj)Teraz zamierzam umieścić kilka zrzutów ekranu z wykonania programu, a następnie wykonanie bez parametru, czyli wykona wyszukiwanie z bieżącego katalogu:
Następujące do wyszukiwania z dysku C w systemie Windows:
I na koniec przechwytywanie, gdy coś, co nie jest katalogiem, jest przekazywane jako parametr:
I samouczek się skończył, jeśli jesteś zainteresowany dalszym badaniem modułu, oto link do oficjalnej dokumentacji, jest w języku angielskim.
Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt