Python File Handling

Python’da Uzantıya Göre Dosya Bulmanın Etkin Yolu

Spread the love

Python’da dosyalar üzerinde çalışırken belirli uzantılı dosyaları bulmak yaygın bir işlemdir. Bu makale, farklı ihtiyaçları ve kodlama stillerini karşılayan, bunu gerçekleştirmenin birkaç verimli ve çok yönlü yöntemini ele alıyor. Farklı Python modüllerini ve tekniklerini ele alacağız, böylece belirli kullanım durumunuz için en uygun yaklaşımı seçebilirsiniz.

İçindekiler

  1. glob Modülünün Kullanımı
  2. os Modülünden Faydalanma
  3. Tek Dizin Aramaları için pathlib‘in Kullanımı
  4. os.walk ile Özyinelemeli Arama
  5. pathlib.rglob ile Özyinelemeli Arama

1. glob Modülünün Kullanımı

glob modülü, tek bir dizin içinde tanımlanmış bir kalıpla eşleşen dosyaları bulmanın özlü bir yolunu sunar. glob() fonksiyonu, kalıbı karşılayan yolların bir listesini döndürür.


import glob

def find_files_with_extension_glob(directory, extension):
  """glob.glob() kullanarak belirli bir uzantılı dosyaları bulur."""
  return glob.glob(f"{directory}/*{extension}")

# Örnek:
files = find_files_with_extension_glob("./my_directory", ".txt")
print(files)

2. os Modülünden Faydalanma

os modülü daha ayrıntılı kontrol sağlar. os.listdir() bir dizindeki tüm girdileri listeler ve özel filtreleme yapılmasına olanak tanır.


import os

def find_files_with_extension_os(directory, extension):
  """os.listdir() kullanarak belirli bir uzantılı dosyaları bulur."""
  files = []
  for filename in os.listdir(directory):
    if filename.endswith(extension):
      files.append(os.path.join(directory, filename))
  return files

# Örnek:
files = find_files_with_extension_os("./my_directory", ".txt")
print(files)

3. Tek Dizin Aramaları için pathlib‘in Kullanımı

pathlib modülü nesne yönelimli bir yaklaşım sunar. glob() metodu, glob.glob()‘dan daha temiz bir sözdizimi sunar.


from pathlib import Path

def find_files_with_extension_pathlib(directory, extension):
  """pathlib.glob() kullanarak belirli bir uzantılı dosyaları bulur."""
  return list(Path(directory).glob(f"*{extension}"))

# Örnek:
files = find_files_with_extension_pathlib("./my_directory", ".txt")
print(files)

4. os.walk ile Özyinelemeli Arama

Alt dizinleri aramak için os.walk() dizin ağacını dolaşır ve her dosyanın istenen uzantıya sahip olup olmadığını kontrol etmenizi sağlar.


import os

def find_files_recursive_os(directory, extension):
    """os.walk() kullanarak belirli bir uzantılı dosyaları özyinelemeli olarak bulur."""
    files = []
    for root, _, filenames in os.walk(directory):
        for filename in filenames:
            if filename.endswith(extension):
                files.append(os.path.join(root, filename))
    return files

# Örnek:
files = find_files_recursive_os("./my_directory", ".txt")
print(files)

5. pathlib.rglob ile Özyinelemeli Arama

pathlib‘in rglob() metodu, özyinelemeli aramalar için en zarif çözümü sunar.


from pathlib import Path

def find_files_recursive_pathlib(directory, extension):
  """pathlib.rglob() kullanarak belirli bir uzantılı dosyaları özyinelemeli olarak bulur."""
  return list(Path(directory).rglob(f"*{extension}"))

# Örnek:
files = find_files_recursive_pathlib("./my_directory", ".txt")
print(files)

Örneklerin doğru çalışması için “my_directory” adında bazı .txt dosyaları içeren bir klasör oluşturmayı unutmayın. Kodlama stilinize ve proje gereksinimlerinize en uygun yöntemi seçin. Basit, tek dizin aramaları için glob veya pathlib.glob() mükemmel seçeneklerdir. Özyinelemeli aramalar için pathlib.rglob() en özlü ve okunabilir çözümü sağlar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir