Python'da Komut Satırı Arabirimleri Yapmanın En İyi Yolu

Kullanımı kolay, sezgisel Python programları nasıl yazılır

Komut satırı arayüzü (CLI):

Komut satırı kullanıcı arayüzü, konsol kullanıcı arayüzü ve karakter kullanıcı arayüzü olarak da bilinen komut satırı arayüzü veya komut dili yorumlayıcısı, kullanıcının program şeklinde bir komut verdiği bir bilgisayar programı ile etkileşime girme aracıdır art arda metin satırları.

Komut satırı arayüzü (CLI) oluşturarak programınızı güçlü ve etkileşimli yapabilirsiniz. Bir CLI, programınıza ek özellikler ekleyerek kodunuzu hem kullanımı hem de esnek bir hale getirmek için komut satırında argümanlar (programın işletim sisteminin komut satırındaki adını izleyen bilgiler) almanıza izin verir. Programa bağlı olarak, bu argümanlar, yardım belgelerini görüntüleme, bir çıktı dosyasını belirtme veya normal kullanım için zararlı olabilecek test özelliklerini etkinleştirme gibi ek özellikler eklemek için kullanılabilir.

Python'da programlamaya ilk başladığımda, neredeyse sadece etkileşimli olarak bu şekilde kullanıcı girdisi topladım:

def main ():
    first = input (“İlk adınızı girin:”)
    last = input (“Soyadınızı girin:”)
    yazdır (ilk + '' + son)

Bu kod basit scriptler için uygun olsa da, birkaç nedenden dolayı problemlidir. Yeni başlayanlar için bu kod esnek değildir. Bir kullanıcı bu programı çalıştırdığında, yalnızca tek bir tanımlanmış kural kümesiyle sınırlandırılır. Örneğin, konsola yazdırmak yerine, çıktıyı bir metin dosyasına kaydetmek istersem ne olur? Yeni bir kullanıcı olarak programın nasıl çalıştığını nasıl anlarım? Bir geliştirici olarak, bu sorunlara bir çözüm sunmak için bir komut satırı arayüzü oluşturabilirsiniz.

Önemli hususlar

Bir CLI oluştururken, aşağıdakileri göz önünde bulundurmak önemlidir:

  1. Gerekli argümanlar: Programın çalışması için kesinlikle hangi argümanlar gereklidir? Örneğin, bir web sayfasını kazımak için bir program yazıyorsam, gerekli bir argüman sayfanın etki alanı olabilir.
  2. Belgelendirme: Her bir seçenek ve argümanın işlevini yazmak önemlidir, böylece yeni bir kullanıcı programınızın nasıl çalıştığını anlayabilir.
  3. Hata durumlarını ele alın: Kullanıcıya tam olarak neyin yanlış gittiğini ve nerede olduğunu bildirme
  4. Çalışma zamanı durumu: Görev anında tamamlanmazsa, geçerli ilerlemeyi yazdırmanız gerekir

Argparse kullanarak argümanları okuma

Argparse, komut satırı argümanlarını ayrıştırmak için bir Python standart kütüphane modülüdür. Siz programcı olarak alınacak argümanları tanımlayabilirsiniz ve argparse sys.argv öğesinden nasıl ayrıştırılacağını çözecektir (Python'da komut satırına gönderilen komut satırı argümanlarını içeren bir liste, burada daha fazla bilgi edinin). Argparse ayrıca otomatik olarak yardım ve kullanım mesajları üretir ve kullanıcılar programa geçersiz argümanlar verirken hata verir. Kullanımı çok basittir ve sezgisel CLI'ler yazmayı çok kolaylaştırır.

Başlamak için, test_cli.py adlı yeni bir dosya oluşturun ve modülü içe aktarın ve yeni bir ayrıştırıcı başlatın:

argparse alma
parser = argparse.ArgumentParser ()
parser.parse_args ()

Şimdi kodu - help seçeneğiyle çalıştırın:

python3 test_cli.py - yardım

Bunun gibi hoş bir varsayılan yardım mesajı almalısınız:

kullanım: test_cli.py [-h]
isteğe bağlı argümanlar:
    -h, --help yardım mesajını göster ve çıkar

Tebrikler, ilk komut satırı arayüzünüzü yaptınız!

Şimdi, programın ne yaptığını kullanıcılarınıza kısaca bildirmek için bir hoş geldiniz mesajı ekleyelim:

welcome = "Etkileşimli komut satırı arayüzleri oluşturma alıştırması"
parser = argparse.ArgumentParser (Description = Hoşgeldiniz)
parser.parse_args ()

Şimdi programı -h bayrağıyla çalıştırın. Fantezi hoş geldiniz mesajınızı görebilmeniz gerekir.

Şimdi daha yararlı bir şeyler yapalım.

Bağımsız Değişkenler Eklemek

Bir web sayfasını kazımak için bir program yazdığımızı varsayalım. İhtiyacımız olabilecek bazı argümanlar, --domain veya -d web sitesinin etki alanı, çıktı dosyasını bir çıktı dosyasına kaydetme seçeneği - ofile veya -o ve belki de konsola belirli sayıda çıktı satırı yazdırma seçeneğidir. - hatları veya -l. Bu örnekte, ofile ve lines argümanları isteğe bağlı olurken gerekli alan argümanını yapacağız.

Kullanım ayrıntılarını tanımlayabilmemiz için .add_argument komutunu kullanarak bir argüman CLI'sine kolayca ek argümanlar ekleyebiliriz. İstenilen argümanı --domain gibi ekleyebiliriz:

parser.add_argument ('- etki alanı', '-d', gerekli = Doğru, yardım = 'kazımak istediğiniz web sitesinin etki alanı adı. yani “https://ahadsheriff.com"')

Şimdi yazdığınız belgeleri görmek için programı -h argümanıyla çalıştırın!

--Domain gerekli bir argüman olduğundan, programı herhangi bir bayrak kullanmadan çalıştırmayı deneyin;

kullanım: test_cli.py [-h] --domain DOMAIN
test_cli.py: error: aşağıdaki argümanlar gereklidir: --domain / -d

İşe yarıyor!

Argparse kullanarak ek argümanlarımızı ekleme zamanı. Hangi değişkenlerin gerekli olduğunu belirtmezseniz, argparse isteğe bağlı olduklarını varsayar. Ayrıca bir argüman türünü de ayarlayabilirsiniz, çünkü - bir tamsayı alacağımız satırlar. .Add_argument için ayarlayabileceğiniz, action = - gibi, burada resmi argparse belgelerinde daha fazla bilgi edinebileceğiniz başka faydalı seçenekler de vardır.

parser.add_argument ('- ofile', '-o', help = 'stdout sonuçlarını kaydetmek için çıktı dosyasını tanımlayın. i.e. "output.txt"')
parser.add_argument ('- lines', '-l', help = 'konsola yazdırılacak çıktı satırı sayısı "', type = int)

Şimdi her şeyin düzgün çalıştığından emin olmak için kodunuzu test edin. Bunu yapmanın basit bir yolu, argümanların değerlerini değişken olarak saklamak ve sonra bu değerleri yazdırmaktır.

args = parser.parse_args ()
domain = args.etkialani
ofile = args.ofile
lines = args.lines
baskı ("etki alanı:", etki alanı)
print ("çıktı dosyası:", ofile)
yazdır ("lines:", lines)

Not: İsteğe bağlı argümanlar kullanılmadığı sürece varsayılan olarak Yok olarak saklanır.

İşte tüm kodum:

Sonuç olarak

Bu kapsamlı bir rehber olmasa da, komut satırı arayüzleri hakkında düşünmenize ve komut dosyalarınızın kullanıcı deneyimini geliştirmenize yetecek kadar olmalıdır. Sonuçta, kimse kullanamıyorsa, kodun amacı nedir? Ek önerileriniz, ipuçlarınız veya kaynaklarınız varsa, lütfen yorumları paylaşın!

Okuduğunuz için teşekkürler! Eğer zevk aldıysanız, aşağıdaki düğmeyi parçaladığınızdan emin olun :) Ayrıca web sitemi, Twitter, LinkedIn ve Github'ı da kontrol ettiğinizden emin olun.