w tym samouczku omówimy wszystko, co musisz wiedzieć o wyświetlaniu plików w katalogu za pomocą Pythona.
Python jest językiem ogólnego przeznaczenia, używanym w różnych dziedzinach, takich jak nauka o danych, Uczenie maszynowe, a nawet w tworzeniu stron internetowych. Wydaje się, że nie ma ograniczeń w stosowaniu języka Python.
dlatego wydaje się dość trywialne, że Python może być używany do listowania plików i katalogów w dowolnym systemie., Celem tego artykułu jest przybliżenie czytelnikowi sposobów listowania plików w systemie za pomocą Pythona.
Wyświetla listę wszystkich plików w katalogu używającym Pythona
do interakcji z katalogami w systemie używającym Pythona używana jest bibliotekaos
.
1. Korzystanie z biblioteki ' os '
metodą, którą będziemy ćwiczyć dla naszego motywu jest listdir(). Jak sama nazwa wskazuje, służy do wyświetlania pozycji w katalogach.,
# Importing the os libraryimport os# The path for listing itemspath = '.'# The list of itemsfiles = os.listdir(path)# Loop to print each filename separatelyfor filename in files:print(filename)
Wyjście:
game_file.pyhi-lo_pygame.pyJournaldevlist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp
użytkownicy Linuksa mogą łatwo dopasować powyższe wyjście za pomocą standardowego ls
polecenie na terminalu.
jak widzimy wyjścia każdej metody pasuje.
2., Korzystanie z biblioteki 'glob'
glob
jest w większości biblioteką pasującą do wzorców plików, ale może być używane do wyświetlania pozycji w bieżącym katalogu przez:
Wyjście:
game_file.pyhi-lo_pygame.pyJournaldevlist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp
znak wieloznaczny '*'
jest używany do dopasowania wszystkich pozycji w bieżącym katalogu. Ponieważ chcemy wyświetlić pozycje bieżącego katalogu, musimy wyłączyć funkcję glob()
.
3., Lista tylko plików w bieżącym katalogu
w powyższych metodach kod Pythona zwracał wszystkie pozycje w bieżącym katalogu, niezależnie od ich charakteru. Możemy rozpakować tylko pliki używając funkcjipath.isfile()
wewnątrz biblioteki os
.
Output:
game_file.pyhi-lo_pygame.pylist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp
w powyższym fragmencie kodu zrozumienie listy jest używane do filtrowania tylko tych elementów, które są rzeczywiście plikami.,
kolejną kluczową rzeczą, którą należy tutaj zauważyć, jest to, że powyższy kod nie działa dla innych katalogów, ponieważ zmienna 'f'
nie jest ścieżką bezwzględną, ale względną do bieżącego katalogu.
Lista wszystkich plików w katalogu rekurencyjnie
aby wydrukować pliki wewnątrz katalogu i jego podkatalogów, musimy przechodzić je rekurencyjnie.
1. Korzystając z biblioteki' os '
za pomocą metodywalk()
, możemy przemierzać każdy podkatalog w katalogu jeden po drugim.,
wyjście:
metoda os.walk()
po prostu podąża za każdym podkatalogiem i domyślnie wyodrębnia pliki w sposób odgórny. Istnieją trzy Iteratory używane do przechodzenia przez wyjście os.walk()
funkcja:
-
path
– ta zmienna zawiera bieżący katalog, który funkcja obserwuje podczas pewnej iteracji -
folders
– ta zmienna jest listą katalogów wewnątrz'path'
katalog., files
– Lista plików znajdujących się w katalogu'path'
.
metodajoin()
jest używana do połączenia nazwy pliku z jego katalogiem nadrzędnym, zapewniając nam względną ścieżkę do pliku.
2. Korzystając z biblioteki ' glob '
podobnie do powyższej procedury,glob
może rekurencyjnie odwiedzać każdy katalog i wyodrębniać wszystkie elementy i zwracać je.,
wyjście:
symbol'**'
używany wraz ze zmienną path mówi funkcjiglob()
aby dopasować pliki w dowolnym podkatalogu. '*'
mówi funkcji, aby pasowała do wszystkich pozycji w katalogu.
ponieważ chcemy wyodrębnić tylko pliki z całego katalogu, filtrujemy pliki za pomocą funkcjiisfile()
używanej wcześniej.
wypisuje wszystkie podkatalogi wewnątrz katalogu
zamiast wypisywać pliki, możemy wypisać wszystkie podkatalogi obecne w określonym katalogu.,
wyjście:
./Documents/Journaldev
drobną różnicą między listowaniem plików i katalogów jest wybór iteratora podczas procesuos.walk()
funkcja. W przypadku plików iterujemy zmienną files. Tutaj zapętlamy zmienną folders.
Wyświetla listę plików w katalogu ze ścieżką absolutną
gdy wiemy, jak wyświetlić listę plików w katalogu, wyświetlanie ścieżki absolutnej to bułka z masłem. Metodaabspath()
zapewnia nam ścieżkę bezwzględną do pliku.,
wyjście:
należy tutaj zauważyć, że abspath()
musi być dostarczona ze ścieżką względną pliku i to jest celem join()
funkcja.
Lista plików w katalogu według pasujących wzorców
istnieje wiele sposobów filtrowania nazw plików pasujących do określonego wzorca. Przejrzyjmy każdy z nich, jeden po drugim.
1. Używając biblioteki ' fnmatch '
jak sama nazwa wskazuje, fnmatch
jest biblioteką dopasowującą wzorce plików., Używając fnmatch
z naszymi standardowymi bibliotekami wyodrębniania nazw plików, możemy odfiltrować te pliki pasujące do określonego wzorca.
wyjście:
List of files containing "file" in them./Documents/game_file.py./Documents/list_files1.py./Documents/list_files.py
funkcjafnmatch()
pobiera dwa parametry, nazwę pliku, a następnie dopasowany wzorzec. W powyższym kodzie przyglądamy się wszystkim plikom zawierającym w nich słowo file
.
2. Korzystanie z biblioteki ' glob '
jak wspomnieliśmy wcześniej,glob's
głównym celem jest dopasowanie wzorca nazwy pliku.,
wyjście:
./Documents/list_files1.py
powyższy wzór pasujący do wyrażenia regularnego'**/**.*'
można wyjaśnić jako:
3. Korzystanie z biblioteki 'pathlib'
pathlib
odbywa się w zorientowany obiektowo sposób interakcji z systemem plików. Funkcjarglob()
wewnątrz biblioteki może być używana do rekurencyjnego wyodrębniania listy plików przez określony obiekt Path.
te listy plików mogą być filtrowane za pomocą wzorca w funkcjirglob()
.,
wyjście:
Documents/my_program.cppDocuments/Journaldev/mastermind.py
powyższy fragment kodu służy do wyświetlenia wszystkich plików zaczynających się na literę'm'
.
Lista plików w katalogu z określonym rozszerzeniem
Lista plików z określonym rozszerzeniem w Pythonie jest nieco podobna do pattern matching. W tym celu musimy utworzyć wzorzec w odniesieniu do rozszerzenia pliku.
wyjście:
funkcjafnmatch()
odfiltrowuje pliki kończące się na'.py'
, czyli pliki Pythona., Jeśli chcemy wyodrębnić pliki z różnymi rozszerzeniami, musimy zmienić tę część kodu. Na przykład, aby pobrać tylko pliki C++, należy użyć '.cpp'
.
sumuje sposoby pobierania listy plików w katalogu za pomocą Pythona.
wnioski
istnieje wiele sposobów rozwiązania każdego problemu, a najwygodniejszy nie zawsze jest odpowiedzią. W odniesieniu do tego artykułu programista Pythona musi być świadomy każdego sposobu, w jaki możemy wyświetlić listę plików w katalogu.