Du kan få en liste over fil- og mappenavne (mappenavne) i Python ved at bruge os-modulets funktion os.listdir().
os.listdir(path='.')
Returnerer en liste med navnene på posterne i den mappe, der er angivet ved sti.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
os-modulet er inkluderet i standardbiblioteket og behøver ikke at blive installeret. Dog er “import” påkrævet.
Her findes følgende oplysninger.
- Hent en liste over både fil- og mappenavne.
- Hent kun en liste over filnavne
- Hent kun en liste over mappenavne
Følgende er et eksempel på en filstruktur (mappe).
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
Ud over os.listdir() kan du også bruge glob-modulet til at få en liste over fil- og mappenavne (mappenavne). glob giver dig mulighed for at angive betingelser ved hjælp af wildcards (*) osv. og rekursivt inkludere undermapper.
I Python 3.4 og senere er det også muligt at få en liste over filer og mapper ved hjælp af pathlib-modulet, som kan manipulere stier som objekter. Ligesom globs ovenfor kan det også bruges betinget og rekursivt.
Hent en liste over både fil- og mappenavne.
Hvis du bruger os.listdir() som det er, vil det returnere en liste over både fil- og mappenavne.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
Du får en liste over stistrenge.
Hent kun en liste over filnavne
Hvis du kun vil have en liste med filnavne, skal du bruge funktionen os.path.isfile() til at bestemme, om stien er en fil.Det virker ikke at give kun filnavnet som argument for funktionen os.path.isfile(), så giv den fulde sti som vist nedenfor.os.path.isfile(os.path.join(path, f))
files = os.listdir(path) files_file = [f for f in files if os.path.isfile(os.path.join(path, f))] print(files_file) # ['file1', 'file2.txt', 'file3.jpg']
Hent kun en liste over mappenavne
Hvis du kun ønsker at få en liste over mappenavne, skal du bruge os.path.isdir() på samme måde.
files = os.listdir(path) files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))] print(files_dir) # ['dir1', 'dir2']