Küçük Proje: Command Line Tool Geliştirme Adım Adım
Command line tool geliştirmek, yazılımcı için temel bir beceridir. Kullanıcıdan girdi alıp işleme yapan, sonuç veren küçük bir proje ile başlayalım.
Bu örnekte bir dosya analiz aracı yapacağız. CSV dosyasını okuyup satır sayısı, sütun sayısı ve basit istatistikler gösterecek.
1python -m pip install clickKütüphane kurulumu bittikten sonra, aracımızı yazalım:
1import click2import csv3from pathlib import Path45@click.command()6@click.argument('dosya', type=click.Path(exists=True))7@click.option('--delimiter', default=',', help='Ayırıcı karakter')8def analiz_et(dosya, delimiter):9"""CSV dosyasını analiz eder ve istatistik gösterir."""10try:11with open(dosya, 'r', encoding='utf-8') as f:12reader = csv.reader(f, delimiter=delimiter)13satirlar = list(reader)1415if not satirlar:16click.echo(click.style('Hata: Dosya boş!', fg='red'))17return1819satir_sayisi = len(satirlar)20sutun_sayisi = len(satirlar[0])2122click.echo(click.style('\n Analiz Sonuçları', fg='green', bold=True))23click.echo(f'Dosya: {dosya}')24click.echo(f'Satır sayısı: {satir_sayisi}')25click.echo(f'Sütun sayısı: {sutun_sayisi}')26click.echo(f'Toplam hücre: {satir_sayisi * sutun_sayisi}\n')2728except Exception as e:29click.echo(click.style(f'Hata: {str(e)}', fg='red'))3031if __name__ == '__main__':32analiz_et()Dosyayı tool.py olarak kaydedip çalıştıralım:
1python tool.py test.csvTest dosyası oluşturup deneyelim:
1echo -e "Ad,Yaş,Şehir\nAhmet,28,İstanbul\nAyşe,32,Ankara" > test.csv2python tool.py test.csvBeklenen çıktı:
1Analiz Sonuçları2Dosya: test.csv3Satır sayısı: 34Sütun sayısı: 35Toplam hücre: 9Aracı kişiselleştirmek için --delimiter seçeneğini de kullanabilirsiniz:
[cod]
python tool.py test.csv --delimiter ','
[/kod]
Sık yapılan hatalar:
- Dosya kodlaması: UTF-8 dışında dosyalar için
encoding='latin-1'deneyin. - Argüman kontrol etmeme:
click.Path(exists=True)her zaman kullanın, yoksa crash edersiniz. - Hata mesajlarını görmezden gelme: Try-except bloğu zorunludur, aksi halde kullanıcı kafası karışır.
Bu yapı, daha büyük CLI araçlarının temelini oluşturur. Komutlar eklemek, alt komutlar yazmak ve konfigürasyon dosyaları okumak gibi özellikler ekleyebilirsiniz. bknz: Go'da Eş Zamanlılık Desenleri: Worker Pool Uygulaması
5 yorum
CSV dosyası analiz etmek güzel bir başlangıç projesi aslında Ama UTF 8 kodlaması dışında dosya açarken ne yapmalıyız başka bir encoding denemek mi
UTF 8 olmayan dosyalarda `encoding` parametresini değiştirmen yeterli mesela `open dosya encoding=latin 1 ` ya da `cp1252` Ama hangi encoding
Ama hangisini seçeceğini nasıl anlayacaksın Dosya açılmadı diye hata verirse denemek zorunda mısın yoksa bir yolu var mı
Aslında deneme yanılma yapabilirsin ama biraz zahmetli Chardet kütüphanesi var dosyanın encodingini otomatik olarak tespit ediyor `pip install
chardet kurdum bir de deneyim istersen ama kütüphane kurmadan da yapılabilir mi