Python İle Dosya Arama İşlemi
Merhaba Arkadaşlar Python ile Dosya arama ve bulunan dosyanın klasorunu açmak için minik bir kodlama hazırladım.
Bilgisayarında belirli bir dosyayı ararken klasör klasör dolaşmak zorunda kaldığını mutlaka yaşamışsındır. Özellikle disk büyüdükçe bu iş hem zaman kaybettirir hem de can sıkıcı hale gelir. İşte tam bu noktada, Python ile yazılmış basit ama etkili bir dosya arama scripti işini oldukça kolaylaştırır.
Bu uygulamada senden sadece iki bilgi istenir: Aramanın başlayacağı dizin ve aradığın dosya adı ya da deseni (*.php, *.xls gibi). Program çalışmaya başladığında, arka planda tüm alt klasörleri tararken sen de ekranda dönen bir yükleniyor animasyonu görürsün. Böylece programın hâlâ çalıştığını net şekilde anlarsın.
Arama işlemi tamamlandığında, bulunan dosyalar sana numaralı bir liste halinde gösterilir. Buradan sadece bir sayı girerek, dosyanın bulunduğu klasörü anında Windows Explorer ile açabilirsin. Uzun dizin yollarını ezberlemene ya da manuel arama yapmana gerek kalmaz.
Bu script, Python’un dosya sistemiyle ne kadar güçlü çalışabildiğini ve küçük dokunuşlarla kullanıcı deneyiminin nasıl iyileştirilebileceğini gösteren güzel bir örnektir. İstersen üzerine eklemeler yaparak daha da gelişmiş bir araca dönüştürmen de mümkündür.Python kodlarınızı Exe haline çevirmek için öncelikle pyinstallerin kurulması gerekmektedir.Aşağıda Açıklamalı komutları yazıyorum.
pip install pyinstaller
Daha Sonra Tek EXE üretmek için;
pyinstaller --onefile dosya_ara.py
Konsol penceresi Gizli olsun istersen;
pyinstaller --onefile --noconsole dosya_ara.py
İkon Eklemek istersen ;
pyinstaller --onefile --icon=icon.ico dosya_ara.py
import os # Dosya ve dizin işlemleri için standart kütüphane
import fnmatch # Dosya adlarını joker karakterlerle eşleştirmek için kullanılır
import subprocess # Harici sistem komutlarını çalıştırmak için kullanılır
import threading # Aynı anda birden fazla iş parçacığı (thread) çalıştırmak için
import time # Zamanla ilgili işlemler (bekleme vb.) için
loading = True # Spinner'ın çalışıp çalışmayacağını kontrol eden bayrak
def spinner():
# Dosya arama işlemi sürerken kullanıcıya animasyon göstermek için
while loading: # loading True olduğu sürece dönmeye devam eder
for c in "|/-\\": # Spinner animasyonu için karakter dizisi
if not loading: # Arama bittiyse döngüden çık
break
print(f"\rAranıyor... {c}", end="", flush=True) # Aynı satırda animasyon yazdır
time.sleep(0.1) # Animasyonun hızını ayarlamak için kısa bekleme
print("\rArama tamamlandı. ") # Arama tamamlandığında mesaj yazdır
def dosya_ara(baslangic_dizini, arama_deseni):
bulunanlar = [] # Bulunan dosyaların tutulacağı liste
# Belirtilen dizin ve alt dizinlerde gezinir
for root, dirs, files in os.walk(baslangic_dizini):
for file in files: # Her dizindeki dosyaları tek tek kontrol eder
# Dosya adı arama desenine uyuyorsa
if fnmatch.fnmatch(file.lower(), arama_deseni.lower()):
# Dosya adı ve bulunduğu dizini listeye ekler
bulunanlar.append((file, root))
return bulunanlar # Bulunan dosyaların listesini geri döndürür
def klasor_ac(yol):
# Windows Explorer ile ilgili klasörü açar
subprocess.Popen(f'explorer "{yol}"')
# ---------------- ANA PROGRAM ----------------
# Kullanıcıdan arama yapılacak başlangıç dizinini alır
baslangic = input("Arama yapılacak dizin (örnek C:\\): ").strip()
# Kullanıcıdan aranacak dosya adını veya desenini alır
aranacak = input("Aranacak dosya (*.php, *.xls, excel.xls): ").strip()
# Spinner fonksiyonunu ayrı bir thread olarak başlatır
spinner_thread = threading.Thread(target=spinner)
spinner_thread.start()
# Dosya arama işlemini başlatır
s aranacak)
# Arama tamamlandığı için spinner'ı durdurur
loading = False
spinner_thread.join() # Spinner thread'inin tamamen bitmesini bekler
# Hiç dosya bulunmadıysa
if not sonuclar:
print("Dosya bulunamadı.")
exit() # Programı sonlandırır
print("\nArama Sonuçları:\n")
# Bulunan dosyaları numaralandırarak ekrana yazdırır
for index, (dosya, dizin) in enumerate(sonuclar, start=1):
print(f"{index} - {dosya} - {dizin}")
try:
# Kullanıcıdan hangi dosyanın klasörünün açılacağını sorar
secim = int(input("\nHangi dosyanın klasörü açılsın? (index no): "))
except ValueError:
# Sayı girilmezse hata mesajı verir
print("Geçersiz giriş.")
exit()
# Seçim geçerli aralıkta mı kontrol edilir
if 1 <= secim <= len(sonuclar):
secilen_dizin = sonuclar[secim - 1][1] # Seçilen dosyanın dizin yolunu alır
klasor_ac(secilen_dizin) # Klasörü açar
else:
print("Geçersiz seçim.")
Yorumlar
Yorum Yazma Kuralları
Yorumlarınız kendi sorumluluğunuzdadır. Yazacağınız Yorumlar ile birlikte IP adresinizde Kayıt Edilir.
Yorumlarda Lütfen Hakaret Küfür Kullanmayınız.
Yorum Yazın