Python’da dosya ve dizin adlarının (klasör adlarının) bir listesini almak için os.listdir() os modülü işlevini kullanın.
os.listdir(path=’.’)
Yol tarafından belirtilen dizindeki girdi adlarını içeren bir liste döndürür.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Os modülü standart kitaplıkta bulunur ve kurulmasına gerek yoktur. Ancak, “ithalat” gereklidir.
Aşağıdaki bilgiler burada verilmiştir.
- Hem dosya hem de dizin adlarının bir listesini alın.
- Yalnızca dosya adlarının bir listesini alın
- Yalnızca dizin adlarının bir listesini alın
Aşağıda bir dosya (dizin) yapısı örneği verilmiştir.
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
os.listdir()’e ek olarak, dosya ve dizin adlarının (klasör adları) bir listesini almak için glob modülünü de kullanabilirsiniz. glob, joker karakterler (*) vb. kullanarak koşulları belirtmenize ve yinelemeli olarak alt dizinler eklemenize olanak tanır.
Python 3.4 ve sonraki sürümlerde, yolları nesneler olarak değiştirebilen pathlib modülünü kullanarak dosya ve dizinlerin bir listesini almak da mümkündür. Yukarıdaki küreler gibi, koşullu ve özyinelemeli olarak da kullanılabilir.
Hem dosya hem de dizin adlarının bir listesini alın.
os.listdir()’i olduğu gibi kullanırsanız, hem dosya hem de dizin adlarının bir listesini döndürür.
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 dizelerinin bir listesidir.
Yalnızca dosya adlarının bir listesini alın
Yalnızca dosya adlarının bir listesini almak istiyorsanız, yolun bir dosya olup olmadığını belirlemek için os.path.isfile() işlevini kullanın. os.path.isfile() işlevinin argümanı olarak yalnızca dosya adını iletmek işe yaramaz, bu nedenle aşağıda gösterildiği gibi tam yolu iletin.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ızca dizin adlarının bir listesini alın
Yalnızca dizin adlarının bir listesini almak istiyorsanız, aynı şekilde os.path.isdir() öğesini kullanın.
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']