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:
Yazara göre resim
Listedeki tüm görevlerin bir listesini alın:
Yazara göre resim
Ayrıca bir görevi tamamladıktan sonra (dizini kullanarak) kaldırın:
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:
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 diyelimparser
). - 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 help
kullanı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.
Bu Konu hakkında daha fazlası
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoData.Network Dikey Üretken Yapay Zeka. Kendine güç ver. Buradan Erişin.
- PlatoAiStream. Web3 Zekası. Bilgi Genişletildi. Buradan Erişin.
- PlatoESG. karbon, temiz teknoloji, Enerji, Çevre, Güneş, Atık Yönetimi. Buradan Erişin.
- PlatoSağlık. Biyoteknoloji ve Klinik Araştırmalar Zekası. Buradan Erişin.
- Kaynak: https://www.kdnuggets.com/build-a-command-line-app-with-python-in-7-easy-steps?utm_source=rss&utm_medium=rss&utm_campaign=build-a-command-line-app-with-python-in-7-easy-steps