Získanie zoznamu názvov súborov a adresárov v jazyku Python.

obchodné

Ak chcete získať zoznam názvov súborov a adresárov (názvov priečinkov) v jazyku Python, použite funkciu modulu os os.listdir().

os.listdir(path='.')
Vráti zoznam obsahujúci názvy položiek v adresári zadanom pomocou path.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Modul os je súčasťou štandardnej knižnice a nie je potrebné ho inštalovať. Vyžaduje sa však „import“.

Tu sú uvedené tieto informácie.

  • Získanie zoznamu názvov súborov aj adresárov.
  • Získať iba zoznam názvov súborov
  • Získať len zoznam názvov adresárov

Nasleduje príklad štruktúry súborov (adresárov).

.
└── testdir
    ├── dir1
    ├── dir2
    ├── file1
    ├── file2.txt
    └── file3.jpg

Okrem modulu os.listdir() môžete na získanie zoznamu názvov súborov a adresárov (názvov priečinkov) použiť aj modul glob. glob umožňuje špecifikovať podmienky pomocou zástupných znakov (*) atď. a rekurzívne zahrnúť podadresáre.

V jazyku Python 3.4 a novších verziách je tiež možné získať zoznam súborov a adresárov pomocou modulu pathlib, ktorý dokáže pracovať s cestami ako s objektmi. Podobne ako vyššie uvedené globs, aj tento modul možno použiť podmienečne a rekurzívne.

Získanie zoznamu názvov súborov aj adresárov.

Ak použijete funkciu os.listdir(), vráti zoznam názvov súborov aj adresárov.

import os

path = "./testdir"

files = os.listdir(path)
print(type(files))  # <class 'list'>
print(files)        # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']

Získate zoznam reťazcov ciest.

Získať iba zoznam názvov súborov

Ak chcete získať len zoznam názvov súborov, použite funkciu os.path.isfile() na určenie, či je cesta súborom. odovzdanie len názvu súboru ako argumentu funkcie os.path.isfile() nebude fungovať, preto odovzdajte celú cestu, ako je uvedené nižšie.
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']

Získať len zoznam názvov adresárov

Ak chcete získať len zoznam názvov adresárov, použite rovnakým spôsobom os.path.isdir().

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']
Copied title and URL