Python’da dosya ve dizin adlarının bir listesini alın.

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