Xlera8

Python ile 7 Kolay Adımda Komut Satırı Uygulaması Oluşturun – KDnuggets

Python ile 7 Kolay Adımda Komut Satırı Uygulaması Oluşturun
Yazara göre resim
 

Basit projeler oluşturmak Python'u ve genel olarak herhangi bir programlama dilini öğrenmenin harika bir yoludur. Döngüler için yazmak, yerleşik işlevleri kullanmak, dosyaları okumak ve çok daha fazlasını yapmak için sözdizimini öğrenebilirsiniz. Ancak ancak bir şeyi oluşturmaya başladığınızda gerçekten "öğrenirsiniz".

“Oluşturarak öğrenme” yaklaşımını takip ederek komut satırında çalıştırabileceğimiz basit bir YAPILACAKLAR listesi uygulamasını kodlayalım. Yol boyunca komut satırı argümanlarını ayrıştırma ve dosyalar ve dosya yollarıyla çalışma gibi kavramları keşfedeceğiz. Ayrıca özel işlevleri tanımlamak gibi temel bilgileri de tekrar gözden geçireceğiz.

Hadi başlayalım!

Bu öğreticiyi kodlayarak, komut satırında çalıştırabileceğiniz bir YAPILACAKLAR listesi uygulaması oluşturabileceksiniz. Peki uygulamanın ne yapmasını istersiniz? 

Kağıt üzerindeki YAPILACAKLAR listeleri gibi, görevleri tamamladıktan sonra ekleyebilmeniz, tüm görevleri arayabilmeniz ve kaldırabilmeniz (evet, üzerini çizmeniz veya kağıt üzerinde tamamlandı olarak işaretlemeniz) gerekir, değil mi? Böylece aşağıdakileri yapmamızı sağlayan bir uygulama geliştireceğiz.

Listeye görevler ekleyin:
 

Python ile 7 Kolay Adımda Komut Satırı Uygulaması Oluşturun
Yazara göre resim
 

Listedeki tüm görevlerin bir listesini alın:

 

Python ile 7 Kolay Adımda Komut Satırı Uygulaması Oluşturun
Yazara göre resim
 

Ayrıca bir görevi tamamladıktan sonra (dizini kullanarak) kaldırın:

 

Python ile 7 Kolay Adımda Komut Satırı Uygulaması Oluşturun
Yazara göre resim
 

Şimdi kodlamaya başlayalım!

Öncelikle projeniz için bir dizin oluşturun. Ve proje dizininin içinde bir Python betik dosyası oluşturun. Bu, yapılacaklar listesi uygulamamızın ana dosyası olacaktır. Hadi onu arayalım todo.py

Bu proje için herhangi bir üçüncü taraf kütüphaneye ihtiyacınız yok. Bu nedenle yalnızca Python'un güncel bir sürümünü kullandığınızdan emin olun. Bu eğitimde Python 3.11 kullanılmaktadır.

içinde todo.py dosya, gerekli modülleri içe aktararak başlayın. Basit yapılacaklar listesi uygulamamız için aşağıdakilere ihtiyacımız olacak:

  • tartışma komut satırı bağımsız değişkeni ayrıştırma için 
  • os dosya işlemleri için

O halde ikisini de içe aktaralım:

import argparse
import os

Görevleri eklemek, listelemek ve kaldırmak için komut satırı bayraklarını kullanacağımızı unutmayın. Her argüman için hem kısa hem de uzun seçenekleri kullanabiliriz. Uygulamamız için aşağıdakileri kullanalım:

  • -a or --add görevler eklemek için
  • -l or --list tüm görevleri listelemek için
  • -r or --remove dizini kullanarak görevleri kaldırmak için

Komut satırında sağlanan argümanları ayrıştırmak için argparse modülünü burada kullanacağız. biz tanımlarız create_parser() aşağıdakileri yapan işlev:

  • Bir başlatır ArgumentParser nesne (hadi buna diyelim parser). 
  • Görevleri eklemek, listelemek ve kaldırmak için bağımsız değişkenleri çağırarak ekler. add_argument() ayrıştırıcı nesnesindeki yöntem. 

Argümanları eklerken hem kısa hem de uzun seçenekleri ve ilgili yardım mesajını ekliyoruz. İşte burada create_parser() işlevi:

def create_parser():
    parser = argparse.ArgumentParser(description="Command-line Todo List App")
    parser.add_argument("-a", "--add", metavar="", help="Add a new task")
    parser.add_argument("-l", "--list", action="store_true", help="List all tasks")
    parser.add_argument("-r", "--remove", metavar="", help="Remove a task by index")
    return parser

Şimdi aşağıdaki görev yönetimi işlemlerini gerçekleştirmek için işlevleri tanımlamamız gerekiyor:

  • Görev ekleme
  • Tüm görevleri listeleme
  • Bir görevi dizinine göre kaldırma

Aşağıdaki işlev add_task YAPILACAKLAR listesindeki öğeleri yönetmek için basit bir metin dosyasıyla etkileşime girer. Dosyayı 'ekleme' modunda açar ve görevi listenin sonuna ekler:

def add_task(task):
    with open("tasks.txt", "a") as file:
    file.write(task + "n")

nasıl kullandığımıza dikkat edin with dosyayı yönetmek için bildirim. Bunu yapmak, bir hata olsa bile işlemden sonra dosyanın kapatılmasını sağlayarak kaynak sızıntılarını en aza indirir. 

Daha fazla bilgi edinmek için verimli kaynak yönetimine yönelik bağlam yöneticileri bölümünü okuyun. verimli Python kodu yazmaya ilişkin bu eğitim.

The list_tasks işlevi, dosyanın mevcut olup olmadığını kontrol ederek tüm görevleri listeler. Dosya yalnızca ilk görevi eklediğinizde oluşturulur. Önce dosyanın var olup olmadığını kontrol ediyoruz, ardından görevleri okuyup yazdırıyoruz. Şu anda hiçbir görev yoksa yararlı bir mesaj alırız. :

def list_tasks():
    if os.path.exists("tasks.txt"):
        with open("tasks.txt", "r") as file:
            tasks = file.readlines()
        	for index, task in enumerate(tasks, start=1):
                print(f"{index}. {task.strip()}")
    else:
        print("No tasks found.")

Ayrıca bir uygulama yapıyoruz remove_task Görevleri dizine göre kaldırma işlevi. Dosyayı 'yazma' modunda açmak, mevcut dosyanın üzerine yazar. Böylece dizine karşılık gelen görevi kaldırıyoruz ve güncellenmiş YAPILACAKLAR listesini dosyaya yazıyoruz:

def remove_task(index):
    if os.path.exists("tasks.txt"):
        with open("tasks.txt", "r") as file:
            tasks = file.readlines()
        with open("tasks.txt", "w") as file:
            for i, task in enumerate(tasks, start=1):
                if i != index:
                    file.write(task)
        print("Task removed successfully.")
    else:
        print("No tasks found.")

Ayrıştırıcıyı komut satırı argümanlarını ayrıştıracak şekilde ayarladık. Ayrıca görev ekleme, listeleme ve kaldırma görevlerini gerçekleştirecek işlevleri de tanımladık. Sırada ne var?

Muhtemelen tahmin etmişsinizdir. Yalnızca alınan komut satırı argümanına göre doğru işlevi çağırmamız gerekir. Bir tanımlayalım main() kullanarak komut satırı argümanlarını ayrıştırma işlevi ArgumentParser 3. adımda oluşturduğumuz nesne. 

Sağlanan argümanlara dayanarak uygun görev yönetimi işlevlerini çağırın. Bu, aşağıdaki gibi basit bir if-elif-else merdiveni kullanılarak yapılabilir:

def main():
    parser = create_parser()
    args = parser.parse_args()

    if args.add:
        add_task(args.add)
    elif args.list:
        list_tasks()
    elif args.remove:
        remove_task(int(args.remove))
    else:
        parser.print_help()

if __name__ == "__main__":
    main()

Artık YAPILACAKLAR listesi uygulamasını komut satırından çalıştırabilirsiniz. Kısa seçeneği kullanın h veya uzun seçenek helpkullanımına ilişkin bilgi almak için:

$ python3 todo.py --help
usage: todo.py [-h] [-a] [-l] [-r]

Command-line Todo List App

options:
  -h, --help  	show this help message and exit
  -a , --add  	Add a new task
  -l, --list  	List all tasks
  -r , --remove   Remove a task by index

Başlangıçta listede hiçbir görev yoktur, bu nedenle --list tüm görevleri listelemek için “Görev bulunamadı.” çıktısını alın:

$ python3 todo.py --list
No tasks found.

Şimdi YAPILACAKLAR listesine şu şekilde bir öğe ekliyoruz:

$ python3 todo.py -a "Walk 2 miles"

Şimdi öğeleri listelediğinizde, eklenen görevi görebilmeniz gerekir:

$ python3 todo.py --list
1. Walk 2 miles

Görevler.txt dosyasının oluşturulduğu ilk öğeyi eklediğimiz için (bkz. list_tasks 4. adımdaki işlev):

$ ls
tasks.txt  todo.py

Listeye bir görev daha ekleyelim:

$ python3 todo.py -a "Grab evening coffee!"

Ve başka:

$ python3 todo.py -a "Buy groceries"

Şimdi tüm görevlerin listesine bakalım:

$ python3 todo.py -l
1. Walk 2 miles
2. Grab evening coffee!
3. Buy groceries

Şimdi bir görevi indeksine göre kaldıralım. Akşam kahvesini bitirdiğimizi varsayalım (ve umarım o gün için), bu yüzden gösterildiği gibi kaldıralım:

$ python3 todo.py -r 2
Task removed successfully.

Değiştirilen YAPILACAKLAR listesi aşağıdaki gibidir:

$ python3 todo.py --list
1. Walk 2 miles
2. Buy groceries

Tamam, uygulamamızın en basit versiyonu hazır. Peki bunu nasıl daha ileriye taşıyabiliriz? İşte deneyebileceğiniz birkaç şey:

  • Geçersiz bir komut satırı seçeneği kullandığınızda ne olur (örneğin -w or --wrong)? Varsayılan davranış (if-elif-else merdiveninden hatırlarsanız) yardım mesajını yazdırmaktır ancak bir istisna da olacaktır. Try-hariç blokları kullanarak hata işlemeyi uygulamayı deneyin.
  • Uç durumları içeren test senaryolarını tanımlayarak uygulamanızı test edin. Başlamak için yerleşik Unittest modülünü kullanabilirsiniz.
  • Her görevin önceliğini belirleme seçeneğini ekleyerek mevcut sürümü geliştirin. Ayrıca görevleri önceliğe göre sıralamayı ve almayı deneyin.

▶ ️ Bu eğitimin kodu GitHub'dadır.

Bu eğitimde basit bir komut satırı YAPILACAKLAR listesi uygulaması geliştirdik. Bunu yaparken komut satırı argümanlarını ayrıştırmak için yerleşik argparse modülünü nasıl kullanacağımızı öğrendik. Ayrıca basit bir metin dosyası üzerinde ilgili işlemleri gerçekleştirmek için komut satırı girişlerini de kullandık. 

Peki bundan sonra nereye gideceğiz? Python kütüphaneleri şöyle Typer Komut satırı uygulamaları oluşturmayı çocuk oyuncağı haline getirin. Yakında çıkacak Python eğitiminde Typer'ı kullanarak bir tane oluşturacağız. O zamana kadar kodlamaya devam edin!
 
 

Bala Priya C Hindistan'dan bir geliştirici ve teknik yazardır. Matematik, programlama, veri bilimi ve içerik oluşturmanın kesiştiği noktada çalışmayı seviyor. İlgi ve uzmanlık alanları DevOps, veri bilimi ve doğal dil işlemeyi içermektedir. Okumayı, yazmayı, kodlamayı ve kahve içmeyi seviyor! Şu anda öğreticiler, nasıl yapılır kılavuzları, fikir yazıları ve daha fazlasını yazarak öğrenmeye ve bilgilerini geliştirici topluluğuyla paylaşmaya çalışıyor. Bala ayrıca ilgi çekici kaynaklara genel bakış ve kodlama eğitimleri de oluşturuyor.

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?