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 aleborozšírenie png vC: 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žívaos.scandir () namiestoos.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 () aPrí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.

importtyprepodadresár,dirs,súboryvty.kráčať(r'C: Users admin '): prenázov súboruvsúbory:cesta k súboru=podadresár+ty.Sept+názov súborukebycesta k súboru.končí s('.jpg') alebocesta k súboru.končí s('.png'): vytlačiť (cesta k súboru)

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 asúbory pdf vC: Users admin adresár

importzemegule# Vytlačte obrázky png v priečinku C: Users admin precesta k súboruvzemegule.iglob(r'C: Users admin *. png '): vytlačiť(cesta k súboru) # Vytlačte súbory pdf v priečinku C: Users admin precesta k súboruvzemegule.iglob(r'C: Users admin *. pdf '): vytlačiť(cesta k súboru)

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íponurekurzívny param naPravda

importzemegule# Rekurzívne vytlačte obrázky vo formáte png v priečinku C: Users admin precesta k súboruvzemegule.iglob(r'C: Users admin *. png ',rekurzívny=Pravda): vytlačiť(cesta k súboru) # Rekurzívne tlačte súbory PDF v priečinku C: Users admin precesta k súboruvzemegule.iglob(r'C: Users admin *. pdf ',rekurzívny=Pravda): vytlačiť(cesta k súboru)

Môžete buď použiťglob.iglob aleboglob.glob. Rozdiel je v tom,glob.iglob vráti iterátor, ktorý poskytne cesty zodpovedajúce vzoru názvu cesty whileglob.glob vráti zoznam.

5. Opakujte rekurzívne pomocouTrieda cesty odmodul 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

odpathlibimportCestičky=Cesta('C: Users admin').zemegule('** /*. png') precestavcesty: # pretože cesta je objekt, nie reťazeccesta_v_str= p(cesta) # Robte niečo s cestou vytlačiť(cesta_v_str)