Python ile Clear Fonksiyonu - Mustafa Sabri OĞUZ

Duyurular

8 Haziran 2019 Cumartesi

Python ile Clear Fonksiyonu

Python ile programlamanın başlarında mısınız? Yada basit ama kullanışlı bir programlar üretip, arayüzü arka plana sallayanlardan mısınız? Neden mi tüm bu sorular? Çünkü bugün ufak bir program yazarken, ihtiyaç duyduğum bir işlevi sizlerle paylaşmak ve programlama notlarımın arasına yeni bir kod daha iliştirmek istedim.

İhtiyaç

Üzerinde çalıştığım yazılım deneyi, şimdilik küçük ve gelişmiş bir arayüze ihtiyacı olmayan bir proje... Bu nedenle programlama derslerinin başlarında gördüğümüz metinsel menüleri içeren bir arayüzün yeterli olacağını düşündüm ve koyuldum metinsel ifadeleri oluşturmaya...

Problem

Metinsel arayüz için yazılarımızı hazırladık hazırlamasına fakat çıktılarımız alt alta birbirini takip ettiğinden bir metinsel bir karmaşaya neden olmakta ve oluşturmaya çalıştığımız arayüz, estetik olarak hiç hoş gözükmeyecektir. Bunu altta ki resimde görebilirsiniz.
Her işlem seçiminde eski çıktıların, komut istemci sinden (konsol - terminal) temizlenmesi gerekiyor. Böylece programımız sayfa sayfa, sade bir şekilse çıktılar oluşabilsin. Ayrıca bu işlem tüm işletim sistemlerinde çalışabiliyor olması lazım.

Çözüm

Konsol penceresinin her işlemden önce temizlenebilmesi için temizleme komutunun kullanılması gerekiyor. Temelde bu arayüzlerin çalışma mantığı aynı olmasına rağmen işletim sistemlerine göre farklılıklar bulunuyor. Konumuz olan komutlar; Windows işletim sistemlerinde "cls", Mac ve Linux işletim sistemlerinde ise "clear" komutu dur. Python'da geliştirdiğimiz yazılımlar her işletim sisteminde çalışacağı için bizim bu komut ayrımını yapacak basit bir clear fonksiyonu yazmamız gerekiyor.

Peki bu işletim sistemi ayrımını nasıl yapabiliriz? Bunun için Python'un işletim sistemlerini birbirinden ayırt edebilmek için kullandığı "os" modülünü kullanacağız. Os modülü, işletim sisteminin İngilizce ifadesi olan "Operating System" in baş harflerinin kısaltılmasını kullanmıştır.
import os
ifadesi ile modülü kodumuza dahil ediyoruz.
os.name
Ardından os modülünün name değişkeninde ki değeri; if karar yapısını kullanarak, işletim sistemlerinin kısaltmaları ile kontrolünü sağlıyoruz.
Bu kısaltmalar; nt (Windows), mac (MacOS), posix (Linux) şeklindedir. 
os.system([Temizleme Komutu])
Sağlanan if kontrolünde hangi işletim sistemi ile eşleşirse, o işletim sistemin temizleme komutunu parametre olarak yine os modülü içerisinde bulunan sistem komutlarını çalıştıran system() fonksiyonuna iletiyoruz.

Buraya kadar anlattıklarımı toplarsak;
import os

# Terminal Penceresini Temizleyen fonksiyon
def clear():
"""
Bu fonksiyon terminal penceresini ilk haline getirir.
"""
# İşletim Sistemi Windows ise
if os.name == 'nt':
_ = os.system('cls')
# İşletim Sistemi MacOS ise
elif os.name == 'mac':
_ = os.system('clear')
# İşletim Sistemi Linux ise
elif os.name == 'posix':
_ = os.system('clear')
# Yabancı bir işletim sistemi ise
else:
_ = os.system('clear')
kullanacağımız clear fonksiyonunu bu şekilde oluşturdum. Biraz incelediğinizde fark edeceksiniz ki Windows dışında ki temizleme kodları aynı şekilde kullanmış. Fakat yazımın amacı eğitim olduğundan diğer sistemlerininde ayrımını göstermek istedim.

Sonuç

Evet, her metinsel arayüze sahip küçük projelerde kullanabileceğim, fonksiyonum hazır. Fonksiyonun nerede çağrılacağı önemli olduğundan örnek bir menü kodu ile paylaşıyorum.
# Msoguz.com Clear Fonksiyon Örneği
import os
from time import sleep

# Terminal Penceresini Temizleyen fonksiyon
def clear():
"""
Bu fonksiyon terminal penceresini ilk haline getirir.
"""
# İşletim Sistemi Windows ise
if os.name == 'nt':
_ = os.system('cls')
# İşletim sistemi Linux veya Mac ise
else:
_ = os.system('clear')

def anaMenu():
clear()
print("--------------- Proje-1'e Hoşgeldiniz... ---------------")
print("Şirketinizde bulunan personellerin" \
" kaydını tutan bir program.\n")
print("İşlem Seçenekleri;")
print("1. Yeni Personel")
print("2. Personel Bilgisi")
print("3. Personel Sil")
print("4. Programı Sonlandır.")

while (True):
anaMenu()
veri = input("Lütfen yapmak istediğiniz işlemi seçin: ")
if(veri == '4'):
print("Program başarılı bir şekilde sonlandırıldı.")
break
else:
print("Bu seçenek henüz hazır değil.")
print("Lütfen daha sonra deneyiniz.")
sleep(3)
Bu fonksiyonu her işlem çıktısının önce çağırıyorum ki, bir önce ki çıktıları silsin ve o an ki işlemin çıktılarını konsola temiz bir şekilde yazabilsin. Umarım geliştireceğiniz projeler de işinize yarar.

Hiç yorum yok:

Yorum Gönder