Merrni një listë të emrave të skedarëve dhe drejtorive në Python.

biznes

Për të marrë një listë të emrave të skedarëve dhe drejtorive (emrat e dosjeve) në Python, përdorni funksionin e modulit os os.listdir().

os.listdir(path=’.’)
Kthen një listë që përmban emrat e hyrjeve në drejtorinë e specifikuar sipas rrugës.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Moduli os përfshihet në bibliotekën standarde dhe nuk ka nevojë të instalohet. Megjithatë, kërkohet “import”.

Informacioni i mëposhtëm jepet këtu.

  • Merrni një listë të emrave të skedarëve dhe dosjeve.
  • Merrni një listë vetëm me emrat e skedarëve
  • Merrni një listë vetëm me emrat e drejtorive

Më poshtë është një shembull i strukturës së skedarit (direktorisë).

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

Përveç os.listdir(), mund të përdorni gjithashtu modulin glob për të marrë një listë të emrave të skedarëve dhe drejtorive (emrat e dosjeve). glob ju lejon të specifikoni kushtet duke përdorur shkronja të egra (*), etj., dhe të përfshini në mënyrë rekursive nëndrejtori.

Në Python 3.4 dhe më vonë, është gjithashtu e mundur të merrni një listë të skedarëve dhe drejtorive duke përdorur modulin pathlib, i cili mund të manipulojë shtigjet si objekte. Ashtu si globet e mësipërme, ai gjithashtu mund të përdoret me kusht dhe në mënyrë rekursive.

Merrni një listë të emrave të skedarëve dhe dosjeve.

Nëse përdorni os.listdir() ashtu siç është, ai do të kthejë një listë të emrave të skedarëve dhe drejtorive.

import os

path = "./testdir"

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

Ajo që merrni është një listë e vargjeve të shtigjeve.

Merrni një listë vetëm me emrat e skedarëve

Nëse dëshironi të merrni një listë vetëm me emra skedarësh, përdorni funksionin os.path.isfile() për të përcaktuar nëse shtegu është skedar. kalimi i vetëm emrit të skedarit si argument i funksionit os.path.isfile() nuk do të funksionojë, kështu që kaloni shtegun e plotë siç tregohet më poshtë.
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']

Merrni një listë vetëm me emrat e drejtorive

Nëse dëshironi të merrni vetëm një listë të emrave të drejtorive, përdorni os.path.isdir() në të njëjtën mënyrë.

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