Saat luettelon tiedostojen ja hakemistojen (kansioiden) nimistä Pythonissa käyttämällä os-moduulin funktiota os.listdir().
os.listdir(path='.')
Palauttaa luettelon, joka sisältää polun määrittämässä hakemistossa olevien merkintöjen nimet.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Os-moduuli sisältyy standardikirjastoon, eikä sitä tarvitse asentaa. ”import” vaaditaan kuitenkin.
Seuraavat tiedot annetaan tässä.
- Hae luettelo sekä tiedostojen että hakemistojen nimistä.
- Hae luettelo vain tiedostojen nimistä
- Hae luettelo vain hakemistojen nimistä
Seuraavassa on esimerkki tiedostojen (hakemistojen) rakenteesta.
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
Os.listdir():n lisäksi voit käyttää glob-moduulia saadaksesi luettelon tiedostojen ja hakemistojen nimistä (kansioiden nimistä). glob-moduulin avulla voit määrittää ehtoja käyttämällä jokerimerkkejä (*) jne. ja sisällyttää rekursiivisesti alihakemistoja.
Python 3.4:ssä ja uudemmissa versioissa on myös mahdollista saada luettelo tiedostoista ja hakemistoista käyttämällä pathlib-moduulia, joka voi käsitellä polkuja objekteina. Kuten globs edellä, sitä voidaan käyttää myös ehdollisesti ja rekursiivisesti.
Hae luettelo sekä tiedostojen että hakemistojen nimistä.
Jos käytät os.listdir() -toimintoa sellaisenaan, se palauttaa luettelon sekä tiedostojen että hakemistojen nimistä.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
Tuloksena on luettelo polkujen merkkijonoista.
Hae luettelo vain tiedostojen nimistä
Jos haluat saada luettelon vain tiedostonimistä, käytä os.path.isfile()-funktiota sen määrittämiseksi, onko polku tiedosto.Os.path.isfile()-funktion argumenttina ei toimi pelkän tiedostonimen antaminen, joten anna koko polku alla esitetyllä tavalla.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']
Hae luettelo vain hakemistojen nimistä
Jos haluat saada luettelon vain hakemistojen nimistä, käytä os.path.isdir() samalla tavalla.
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']