Ako iterovať súbory v adresári python
How Iterate Over Files Directory Python
Riešenie:
Tento tutoriál vám ukáže niekoľko spôsobov, ako iterovať súbory v danom adresári a vykonať s nimi niektoré akcie pomocou Pythonu.
1. Použitieos.listdir () #
Táto metóda vráti zoznam obsahujúci názvy položiek v adresári určenom cestou. Zoznam je v ľubovoľnom poradí a neobsahuje špeciálne položky '.' a '..', aj keď sú prítomné v adresári.
Príklad : vytlačte všetky cesty k súborom, ktoré majújpg alebo
rozšírenie png v
C: Users admin adresár
importadresár= r'C: Users admin ' prenázov súboruvty.listdir(adresár): kebynázov súboru.končí s('.jpg') alebonázov súboru.končí s('.png'): vytlačiť(ty.cesta.pridať sa(adresár,názov súboru)) inak: ďalej
2. Použitieos.scandir () #
Od Pythonu 3.5 je všetko oveľa jednoduchšieos.scandir (). Tento príklad robí to isté ako vyššie, ale používa
os.scandir () namiesto
os.listdir ()
importadresár= r'C: Users admin ' prevstupvty.skenovanie(adresár): keby (vstup.cesta.končí s('.jpg') alebovstup.cesta.končí s('.png')) avstup.is_file(): vytlačiť(vstup.cesta)
Obajaos.listdir () a
Prístupy os.scandir uvádzajú iba zoznam adresárov alebo súborov bezprostredne pod adresárom. Ak chcete rekurzívny zoznam súborov a priečinkov v danom adresári, zvážte použitie nižšie uvedených metód.
3. Použitieos.walk () #
Táto metóda bude iterovať cez všetky podradené súbory v podadresároch. Vezmite do úvahy vyššie uvedený príklad, ale v tomto prípade táto metóda rekurzívne vytlačí všetky obrázky vo formáteC: Users admin adresár.
4. Použitieglob modul #
Modul glob nájde všetky názvy ciest, ktoré zodpovedajú zadanému vzoru podľa pravidiel používaných v systéme Unix, aj keď výsledky sa vracajú v ľubovoľnom poradí.
Uvažujme o príklade, v ktorom uvedieme všetkypng a
súbory pdf v
C: Users admin adresár
Predvolene,glob.iglob uvádza iba súbory bezprostredne pod daným adresárom. Ak chcete rekurzívne zobrazovať všetky súbory vo vnorených priečinkoch, nastavte príponu
rekurzívny param na
Pravda
Môžete buď použiťglob.iglob alebo
glob.glob. Rozdiel je v tom,
glob.iglob vráti iterátor, ktorý poskytne cesty zodpovedajúce vzoru názvu cesty while
glob.glob vráti zoznam.
5. Opakujte rekurzívne pomocouTrieda cesty odmodul pathlib #
modul pathlib #
Nasledujúci kód robí to isté ako vyššie uvedený príklad, ktorý uvádza a vytlačí obrázok png v priečinku, ale používa súborpathlib.Path