Hae luettelo tiedostojen ja hakemistojen nimistä Pythonissa.

liiketoiminta

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']