Obține o listă de nume de fișiere și directoare în Python.

Afaceri

Pentru a obține o listă de nume de fișiere și directoare (nume de dosare) în Python, utilizați funcția os.listdir() a modulului os.

os.listdir(path='.')
Returnează o listă care conține numele intrărilor din directorul specificat de path.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Modulul os este inclus în biblioteca standard și nu trebuie să fie instalat. Cu toate acestea, este necesar „import”.

Aici sunt furnizate următoarele informații.

  • Obține o listă de nume de fișiere și directoare.
  • Obține doar o listă de nume de fișiere
  • Obține doar o listă de nume de directoare

Următorul este un exemplu de structură a unui fișier (director).

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

În plus față de os.listdir(), puteți utiliza, de asemenea, modulul glob pentru a obține o listă de nume de fișiere și directoare (nume de dosare). glob vă permite să specificați condiții folosind wildcards (*) etc. și să includeți recursiv subdirectoare.

În Python 3.4 și versiunile ulterioare, este posibilă și obținerea unei liste de fișiere și directoare folosind modulul pathlib, care poate manipula căile de acces ca obiecte. La fel ca și glob-urile de mai sus, acesta poate fi utilizat condiționat și recursiv.

Obține o listă de nume de fișiere și directoare.

Dacă utilizați os.listdir() ca atare, acesta va returna o listă de nume de fișiere și directoare.

import os

path = "./testdir"

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

Ceea ce se obține este o listă de șiruri de căi de acces.

Obține doar o listă de nume de fișiere

Dacă doriți să obțineți o listă numai de nume de fișiere, utilizați funcția os.path.isfile() pentru a determina dacă calea este un fișier. trecerea numai a numelui de fișier ca argument al funcției os.path.isfile() nu va funcționa, deci treceți calea completă, așa cum se arată mai jos.
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']

Obține doar o listă de nume de directoare

Dacă doriți să obțineți doar o listă de nume de directoare, utilizați os.path.isdir() în același mod.

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