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 click

Kütüphane kurulumu bittikten sonra, aracımızı yazalım:

1import click
2import csv
3from pathlib import Path
4
5@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)
14
15if not satirlar:
16click.echo(click.style('Hata: Dosya boş!', fg='red'))
17return
18
19satir_sayisi = len(satirlar)
20sutun_sayisi = len(satirlar[0])
21
22click.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')
27
28except Exception as e:
29click.echo(click.style(f'Hata: {str(e)}', fg='red'))
30
31if __name__ == '__main__':
32analiz_et()

Dosyayı tool.py olarak kaydedip çalıştıralım:

1python tool.py test.csv

Test dosyası oluşturup deneyelim:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1echo -e "Ad,Yaş,Şehir\nAhmet,28,İstanbul\nAyşe,32,Ankara" > test.csv
2python tool.py test.csv

Beklenen çıktı:

1Analiz Sonuçları
2Dosya: test.csv
3Satır sayısı: 3
4Sütun sayısı: 3
5Toplam hücre: 9

Aracı kişiselleştirmek için --delimiter seçeneğini de kullanabilirsiniz:

[cod]
python tool.py test.csv --delimiter ','
[/kod]

Sık yapılan hatalar:

  1. Dosya kodlaması: UTF-8 dışında dosyalar için encoding='latin-1' deneyin.
  2. Argüman kontrol etmeme: click.Path(exists=True) her zaman kullanın, yoksa crash edersiniz.
  3. 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ı

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz

5 yorum

  • adlı kullanıcıya yanıt verdi
    dusukpil

    chardet kurdum bir de deneyim istersen ama kütüphane kurmadan da yapılabilir mi

  • adlı kullanıcıya yanıt verdi
    terslale

    Aslında deneme yanılma yapabilirsin ama biraz zahmetli Chardet kütüphanesi var dosyanın encodingini otomatik olarak tespit ediyor `pip install

  • adlı kullanıcıya yanıt verdi
    dusukpil

    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ı

  • adlı kullanıcıya yanıt verdi
    terslale

    UTF 8 olmayan dosyalarda `encoding` parametresini değiştirmen yeterli mesela `open dosya encoding=latin 1 ` ya da `cp1252` Ama hangi encoding

  • dusukpil

    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