V tomto výukovém programu, jsme pokrývají vše, co potřebujete vědět o tom, jak seznam souborů v adresáři pomocí Python.
Python je univerzální jazyk, který se používá v různých oblastech, jako je věda o datech, strojové učení a dokonce i ve vývoji webu. Zdá se, že v aplikaci jazyka Python není žádné omezení.
zdá se tedy, že Python může být použit pro seznam souborů a adresářů v jakémkoli systému., Cílem tohoto článku je osvětlit čtenáře o způsobech, jak seznamovat soubory v systému pomocí Pythonu.
Seznam Všech Souborů v Adresáři Pomocí Python
Za účelem interakce s adresáře v systému pomocí Pythonu, os
knihovna je používá.
1. Pomocí knihovny “ os “
metoda, kterou budeme cvičit pro náš motiv, je listdir (). Jak název napovídá, používá se k seznamu položek v adresářích.,
# 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)
Výstup:
game_file.pyhi-lo_pygame.pyJournaldevlist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp
uživatelé Linuxu může snadno zápas nad výstupem pomocí standardního ls
příkaz v terminálu.
Jak můžeme vidět výstupy jednotlivých metod zápasy.
2., Pomocí glob‘ knihovna
glob
je většinou názvem pattern matching knihovny, ale to může být použit, aby se seznam položek v aktuálním adresáři:
Výstup:
game_file.pyhi-lo_pygame.pyJournaldevlist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp
zástupný znak '*'
se používá, aby odpovídaly všechny položky v aktuálním adresáři. Protože chceme zobrazit položky aktuálního adresáře,musíme vypnout rekurzivní povahu funkce glob()
.
3., Seznam pouze soubory v aktuálním adresáři
ve výše uvedených metodách, python kód vracel všechny položky v aktuálním adresáři bez ohledu na jejich povahu. Soubory můžeme extrahovat pouze pomocí funkce path.isfile()
uvnitř knihovny os
.
výstup:
game_file.pyhi-lo_pygame.pylist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp
ve výše uvedeném fragmentu kódu se porozumění seznamu používá k odfiltrování pouze těch položek, které jsou ve skutečnosti souborem.,
Další klíčovou věc k poznámce je, že výše uvedený kód nefunguje pro jiné adresáře, jako variabilní 'f'
není absolutní cesta, ale relativní cestu k aktuálnímu adresáři.
Seznam Všech Souborů v Adresáři Rekurzivně
chcete-li tisknout soubory uvnitř adresáře a jeho podadresářů, musíme procházet je rekurzivně.
1. Pomocí knihovny “ os “
pomocí metody walk()
můžeme procházet každý podadresář v adresáři jeden po druhém.,
výstup:
metodaos.walk()
jednoduše sleduje každý podadresář a ve výchozím nastavení extrahuje soubory shora dolů. Existují tři iterátory používají pro jde přes výstup os.walk()
funkce:
-
path
– Tato proměnná obsahuje přítomen adresář funkce je pozorovat během určité iterace -
folders
– Tato proměnná je seznam adresářů uvnitř'path'
adresář., -
files
– seznam souborů uvnitř adresáře'path'
.
join()
metoda se používá pro spojování název souboru s jeho nadřazený adresář, nám poskytuje relativní cestu k souboru.
2. Pomocí knihovny „glob“
podobně jako výše uvedený postup může glob
rekurzivně navštívit každý adresář a extrahovat všechny položky a vrátit je.,
Výstup:
'**'
symbol použitý spolu s proměnné path říká, glob()
funkce tak, aby odpovídala soubory do libovolné podadresáře. říká funkci, aby odpovídala všem položkám v adresáři.
Protože chceme extrahovat pouze soubory v kompletní adresář, můžeme odfiltrovat soubory pomocí isfile()
funkce použita dříve.
seznam všech podadresářů v adresáři
místo výpisu souborů můžeme uvést všechny podadresáře přítomné v konkrétním adresáři.,
Výstup:
./Documents/Journaldev
menší rozdíl mezi výpis souborů a adresářů je výběr iterator během procesu os.walk()
funkce. U souborů iterujeme přes proměnnou soubory. Zde se smyčka přes proměnnou složky.
seznam souborů v adresáři s absolutní cestou
jakmile víme, jak seznamovat soubory v adresáři, zobrazení absolutní cesty je hračka. Metodaabspath()
nám poskytuje absolutní cestu k souboru.,
Výstup:
Jedna věc k poznámce, zde je, že abspath()
musí být uvedeny s relativní cestu k souboru a to je účel join()
funkce.
seznam souborů v adresáři odpovídajícími vzory
existuje několik způsobů, jak odfiltrovat názvy souborů odpovídající určitému vzoru. Pojďme projít každou z nich jeden po druhém.
1. Použití ‚fnmatch‘ knihovny
jak název napovídá, fnmatch
je souborový vzor odpovídající knihovna., Pomocí fnmatch
s našimi standardními knihovnami pro extrahování souborů můžeme tyto soubory odfiltrovat podle konkrétního vzoru.
Výstup:
List of files containing "file" in them./Documents/game_file.py./Documents/list_files1.py./Documents/list_files.py
fnmatch()
funkce má dva parametry, názvem následuje vzor, které mají být uzavřeno. Ve výše uvedeném kódu se podíváme na všechny soubory obsahující slovo file
v nich.
2. Použití knihovny „glob“
, jak jsme již zmínili,glob's
primárním účelem je shoda názvů souborů.,
výstup:
./Documents/list_files1.py
výše uvedený vzor odpovídající regulárnímu výrazu '**/**.*'
lze vysvětlit jako:
3. Pomocí knihovny „pathlib“
pathlib
následuje objektově orientovaný způsob interakce se souborovým systémem. Funkce rglob()
uvnitř knihovny lze použít k rekurzivnímu extrahování seznamu souborů prostřednictvím určitého objektu cesty.
tento seznam souborů lze filtrovat pomocí vzoru ve funkci rglob()
.,
Výstup:
Documents/my_program.cppDocuments/Journaldev/mastermind.py
výše uvedený fragment kódu se používá k zobrazení seznamu všech souborů začínající na písmeno 'm'
.
seznam souborů v adresáři s konkrétní příponou
výpis souborů s konkrétní příponou v Pythonu je poněkud podobný přizpůsobení vzoru. Za tímto účelem musíme vytvořit vzor s ohledem na příponu souboru.
Výstup:
fnmatch()
funkce filtruje ty soubory, které končí s '.py'
, který je python soubory., Pokud chceme extrahovat soubory s různými rozšířeními, musíme tuto část kódu změnit. Například pro načtení pouze souborů c++ musí být použito '.cpp'
.
to shrnuje způsoby, jak načíst seznam souborů v adresáři pomocí Pythonu.
závěr
existuje několik způsobů, jak vyřešit jakýkoli problém po ruce a nejvhodnější není vždy odpověď. S ohledem na tento článek, Python programátor si musí být vědom každý způsob, jak můžeme seznam souborů v adresáři.