Ana içeriğe atla

Python argparse modülü

Merhaba arkadaşlar. Komut ekranı ile çok uğraşan biriyseniz, argümanların ne kadar önemli olduğunu çok iyi bilirsiniz. Öyle ki, bir programı her defasında farklı modlarla,farklı sonuçlar üretecek şekilde başlatabilirsiniz.

Ancak argümanları nasıl kontrol edeceğimizi bilmezsek, kullanışlı bir program ortaya koyamayız. Kontrol etmek için kendi yöntemlerimizi kullanabiliriz, ancak hazır olan kütüphaneler dururken tekrar tekerleği icat etmeye gerek yok. O yüzden, bugün burda Python içerisinde hazır olarak bulunan argparse kütüphanesini nasıl kullanacağımızdan bahsedeceğiz.
argparse kütüphanesi ile bir python programına gelen argümanları kontrol altına alabiliriz. Argümanları ayırmak için, bir ArgumentParser nesnesi oluşturmamız gerekiyor.




Argümanları ayırmak için, iki farklı tanımlama şekli vardır.

1) Positional(sıralı) argüman tanımlama

Bu tanım şeklinde, programımıza gelen argümanların belirli bir sırada olmasını isteriz. Örneğin programımıza isim,soyisim,no şeklinde 3 argüman girilsin




Biz bu argümanları kendi programımızda tanımlarken, sıra ile, isim soyisim no şeklinde tanımlayacağız. Yani planımız şu: kullanıcı ilk argümanda isim gönderecek, ikinci argümanda soyisim gönderecek, son argüman ise no'su olacak bende buna göre programda kullanacağım. O zaman programımızı şöyle yazmamız gerekiyor




Programı çalıştıralım;


Gördüğünüz gibi, gelen 3 argüman sıra ile programımıza aktarıldı ve bizde bunları kullanarak ekrana yazdırdık. Eğer "no" adlı argümanın özellikle sayı olmasını istersek, type parametresini kullanabiliriz




Eğer int tipi dışında bir argüman değeri verilirse, program ekranda belirtecektir. Elbette sadece int değil, diğer değişken türlerini de kullanabiliriz.

 Bu sıralı argümanları, biraz sonra göreceğimiz optional tanımlı argümanlar ile birlikte daha işlevli olarak kullanabiliriz.

2) Optional(isteğe bağlı) argüman tanımlama

Bu tanımlama şekli en işe yarar olanıdır. Ve en sık kullanılanı da budur. Yukarıda bir örnek vermiştik. Örneğimizde sıra ile argümanlar giriliyordu. Ancak, kullanıcı argümanları sıra ile vermeyebilir. İlk olarak soyisim yazıp sonra no yazabilir, isim yazmayabilir. Bu durumda, optional(isteğe bağlı) tarzda tanımlama yapmak gerekir. Yukarıdaki örneği optional tarzda yazalım.




Çıktılar;


Gördüğünüz gibi, argümanları sıra ile vermedik. Bunun yanı sıra istemediğimiz argümanları da programa göndermedik. Böylece sıralı olma kuralından kurtulmuş olduk. Eğer istersek --soyisim şeklinde uzun yazmak yerine, -s gibi kısa alternatif tanımlayabiliriz




Artık --soyisim yerine -s şeklinde de kullanarak argümanı gönderebiliriz.

Programımıza -h şeklinde argüman gönderirsek, bize argümanlar hakkında yardım mesajı gösterecektir. Eğer, bu yardım mesajlarını tanımlamak istersek argümanı eklediğimiz sıra, help parametresini kullanabiliriz







Bu yazıda bu kadar. Elimizden geldiğince basit bir şekilde argparse kütüphanesinden bahsettik. Eğer daha detaylı bilgi almak isterseniz, orijinal kaynaktan faydalanabilirsiniz.

Okuduğunuz için teşekkür ederiz. Fikrinizi aşağıda oylayarak belirtirseniz memnun oluruz :) Bir başka yazıda buluşmak üzere...

Yorumlar

  1. adamsın, bir türlü Tr kaynak bulamamıştım, Teşekkür ederim.

    YanıtlaSil
    Yanıtlar
    1. Geç cevap verdiğim için kusura bakmayın. Yorum kutusuna sonradan düştüğü için onaylamam geç oldu. Rica ederim, faydası olduysa ne mutlu bana :)

      Sil
  2. gerçekten yararlı olmuş eline koluna sağlık

    YanıtlaSil
  3. Basit ve güzel anlatım teşekkürler

    YanıtlaSil
  4. Koda ayırdığın alanlar çok küçük o alanı büyütürsen çok iyi olur

    YanıtlaSil
    Yanıtlar
    1. Düzeltme önerin için çok teşekkür ederim :) Bu yazıyı yayınladığım zamanlarda özel bir kod bloğu kullanıyordum, son yazılarımda artık github gist kullanıyorum. Yorumun üzerine buradaki kodları github gist'e aktardım. Umarım şimdi daha iyidir :)

      Sil

Yorum Gönder

Bu blogdaki popüler yayınlar

Python Soket Programlama

Merhaba arkadaşlar. Bugün sizlerle birlikte Python'da socket programlama yapacağız. Bunun için Python da socket kütüphanesini kullanacağız. Peki nedir bu socket programlama? Soket programlama, sizin iki program arası yada iki bilgisayar arası iletişim kurmanızı sağlar. İşte bizde bugün iki programımızı birbiri ile haberleştireceğiz. Bunun için elimizde iki program olacak. Birinci program,mesaj bekleyen program olacak, diğeri ise mesaj gönderen program.

Infix to postfix dönüşümü

Infix to postfix dönüşümü, operatorün ortada olduğu a+b yazım şeklini operatorün sonda olduğu ab+ yazım şekline dönüştürme işlemidir.  Infix gösterimi, bizler için kolay bir gösterim olsa da makineler için öyle değildir. İfadeyi soldan sağa doğru okurken a + b * c işleminde önce b ile c yi çarpıp sonra da a ile toplamayı kolay bir şekilde yapabiliriz çünkü bizim ifadeyi sıra ile soldan sağa adım adım giderek okuma zorunluluğumuz yok. Önce b*c nin öncelikle olduğunu görerek oradan başlar, sonra a ile kolayca toplarız.

Python Subprocess

subprocess modülü, yeni bir process oluşturmayı sağlayan, bunların girdi-çıktılarını ele alma imkânı veren ve dönüş kodlarını almayı sağlayan bir modüldür. Yani daha basit bir şekilde, program içinde program çalıştırmaya imkan veren bir modüldür. Subprocess Modülünün Kullanımı subprocess basit bazı process'leri kullanmak için birkaç tane fonksiyon sunuyor. Daha karmaşık bir process çalıştırmak isterseniz, Popen sınıfını kullanabilirsiniz. Bunlara detaylı bir şekilde değinmeye çalışacağız. Şimdi basit fonksiyonları inceleyelim