Python-da fayl və kataloq adlarının siyahısını əldə edin.

Biznes

Python-da fayl və kataloq adlarının (qovluq adlarının) siyahısını əldə etmək üçün os modulunun os.listdir() funksiyasından istifadə edin.

os.listdir(path=’.’)
Yol ilə müəyyən edilmiş kataloqdakı giriş adlarını ehtiva edən siyahını qaytarır.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Os modulu standart kitabxanaya daxildir və quraşdırılmasına ehtiyac yoxdur. Bununla belə, “idxal” tələb olunur.

Aşağıdakı məlumatlar burada verilir.

  • Həm fayl, həm də qovluq adlarının siyahısını əldə edin.
  • Yalnız fayl adlarının siyahısını əldə edin
  • Yalnız kataloq adlarının siyahısını əldə edin

Aşağıda fayl (kataloq) strukturunun nümunəsi verilmişdir.

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

os.listdir() ilə yanaşı siz fayl və kataloq adlarının (qovluq adlarının) siyahısını əldə etmək üçün glob modulundan da istifadə edə bilərsiniz. glob, joker işarələrdən (*) və s. istifadə edərək şərtləri müəyyən etməyə və rekursiv olaraq alt kataloqları daxil etməyə imkan verir.

Python 3.4 və daha sonrakı versiyalarda yolları obyekt kimi idarə edə bilən pathlib modulundan istifadə edərək fayl və qovluqların siyahısını əldə etmək də mümkündür. Yuxarıdakı globlar kimi, o da şərti və rekursiv şəkildə istifadə edilə bilər.

Həm fayl, həm də qovluq adlarının siyahısını əldə edin.

Əgər os.listdir() funksiyasını olduğu kimi istifadə etsəniz, o, həm fayl, həm də kataloq adlarının siyahısını qaytaracaq.

import os

path = "./testdir"

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

Aldığınız şey yol sətirlərinin siyahısıdır.

Yalnız fayl adlarının siyahısını əldə edin

Yalnız fayl adlarının siyahısını əldə etmək istəyirsinizsə, yolun fayl olub olmadığını müəyyən etmək üçün os.path.isfile() funksiyasından istifadə edin. os.path.isfile() funksiyasının arqumenti kimi yalnız fayl adının ötürülməsi işləməyəcək, ona görə də aşağıda göstərildiyi kimi tam yolu keçin.
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']

Yalnız kataloq adlarının siyahısını əldə edin

Yalnız kataloq adlarının siyahısını əldə etmək istəyirsinizsə, eyni şəkildə os.path.isdir() istifadə edin.

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