Ana içeriğe atla

Python ile otomasyon sistemleri kurma: gündelik i̇şleri ro...

Python ile otomasyon sistemleri kurma: gündelik i̇şleri ro...

Python ile Otomasyon Sistemleri Kurma: Gündelik İşleri Robotlara Devret

Günümüzün hızlı tempolu dünyasında, verimlilik ve zaman yönetimi her zamankinden daha önemli hale geldi. Tekrarlayan ve zaman alan görevler, üretkenliğimizi önemli ölçüde azaltabilir ve daha önemli işlere odaklanmamızı engelleyebilir. Neyse ki, devops-ve-cicd-modern-yazlmn-kalbi.html" title="python" style="color:var(--primary); font-weight:bold; text-decoration:none;">Python programlama dili, otomasyon sistemleri oluşturmak için güçlü ve erişilebilir bir araç sunarak, gündelik işleri "robotlara" devretmemize olanak tanır.

Bu makalede, Python ile otomasyonun temel prensiplerini, faydalarını ve pratik uygulamalarını derinlemesine inceleyeceğiz. Çeşitli otomasyon senaryolarını ele alacak, gerekli araçları ve kütüphaneleri tanıtacak ve adım adım örneklerle otomasyon sistemleri kurmanıza yardımcı olacağız. Ayrıca, clean code prensiplerini otomasyon projelerine nasıl uygulayacağımızı ve daha sürdürülebilir, bakımı kolay kodlar yazabileceğimizi tartışacağız.

İçindekiler

  1. Otomasyonun Gücü ve Önemi
  2. Python ile Otomasyonun Avantajları
  3. Temel Python Araçları ve Kütüphaneler
  4. Pratik Otomasyon Senaryoları
  5. Clean Code Prensipleri ve Otomasyon
  6. Örnek Proje: Dosya Organizasyonu Otomasyonu
  7. İleri Seviye Konular ve Kaynaklar
  8. Sonuç

Otomasyonun Gücü ve Önemi

Otomasyon, belirli bir görevi veya süreci insan müdahalesi olmadan otomatik olarak gerçekleştirmek için teknolojiyi kullanma işlemidir. Günümüzde, neredeyse her sektörde otomasyonun faydaları görülebilir. Üretkenliği artırmak, hataları azaltmak, maliyetleri düşürmek ve çalışanların daha stratejik ve yaratıcı işlere odaklanmasını sağlamak, otomasyonun sunduğu başlıca avantajlardır.

Örneğin, bir e-ticaret şirketi, siparişleri otomatik olarak işleyebilir, stok seviyelerini güncelleyebilir ve kargoları takip edebilir. Bir pazarlama ekibi, sosyal medya gönderilerini planlayabilir, e-posta kampanyalarını otomatikleştirebilir ve müşteri davranışlarını analiz edebilir. Bir finans departmanı, faturaları otomatik olarak işleyebilir, ödemeleri takip edebilir ve raporlar oluşturabilir.

Otomasyon sadece büyük şirketler için değil, aynı zamanda küçük işletmeler ve bireyler için de büyük bir potansiyele sahiptir. Tekrarlayan görevleri otomatikleştirerek, zaman ve kaynak tasarrufu sağlayabilir, iş süreçlerini iyileştirebilir ve daha rekabetçi hale gelebilirsiniz.

Python ile Otomasyonun Avantajları

Python, otomasyon sistemleri geliştirmek için ideal bir programlama dilidir. Bunun başlıca nedenleri şunlardır:

  • Basit ve Okunabilir Sözdizimi: Python'ın sözdizimi, İngilizceye yakınlığı sayesinde kolayca anlaşılabilir ve öğrenilebilir. Bu, kod yazmayı ve okumayı kolaylaştırır ve otomasyon projelerine hızlı bir şekilde başlamanızı sağlar.
  • Geniş Kütüphane Desteği: Python, otomasyon için özel olarak tasarlanmış çok sayıda kütüphaneye sahiptir. Dosya yönetimi, web veri çekme, e-posta gönderme, görev zamanlama, veri analizi ve daha birçok işlem için hazır araçlar sunar.
  • Platform Bağımsızlığı: Python, Windows, macOS ve Linux gibi farklı işletim sistemlerinde çalışabilir. Bu, otomasyon projelerinizi farklı platformlarda kolayca dağıtabilir ve çalıştırabilirsiniz.
  • Büyük Topluluk ve Destek: Python'ın geniş ve aktif bir topluluğu vardır. Bu, sorunlarla karşılaştığınızda veya yardıma ihtiyacınız olduğunda kolayca destek bulabileceğiniz anlamına gelir.
  • Entegrasyon Kolaylığı: Python, diğer programlama dilleri ve teknolojilerle kolayca entegre edilebilir. Bu, mevcut sistemlerinizi otomatikleştirmek veya yeni otomasyon çözümleri oluşturmak için Python'ı kullanabileceğiniz anlamına gelir.

Temel Python Araçları ve Kütüphaneler

Python ile otomasyon projeleri geliştirirken kullanabileceğiniz birçok araç ve kütüphane bulunmaktadır. İşte en önemlilerinden bazıları:

os Modülü: Dosya ve Dizin İşlemleri

os modülü, işletim sistemi ile etkileşim kurmanızı sağlar. Dosya ve dizin oluşturma, silme, yeniden adlandırma, taşıma gibi temel dosya sistemi işlemlerini gerçekleştirebilirsiniz.


import os

# Yeni bir dizin oluştur
os.makedirs("yeni_dizin", exist_ok=True)

# Bir dosyanın var olup olmadığını kontrol et
if os.path.exists("dosya.txt"):
    print("Dosya mevcut")

# Bir dosyayı sil
# os.remove("dosya.txt")

# Mevcut çalışma dizinini al
mevcut_dizin = os.getcwd()
print(f"Mevcut dizin: {mevcut_dizin}")

shutil Modülü: Yüksek Seviyeli Dosya İşlemleri

shutil modülü, os modülüne göre daha yüksek seviyeli dosya işlemlerini gerçekleştirmenizi sağlar. Dosya kopyalama, taşıma, arşivleme gibi işlemleri kolayca yapabilirsiniz.


import shutil

# Bir dosyayı kopyala
shutil.copy("dosya.txt", "kopya_dosya.txt")

# Bir dizini kopyala (recursive)
# shutil.copytree("kaynak_dizin", "hedef_dizin")

# Bir dosyayı veya dizini taşı (rename)
shutil.move("dosya.txt", "yeni_konum/dosya.txt")

# Bir dizini sil (recursive)
# shutil.rmtree("dizin")

datetime Modülü: Tarih ve Zaman İşlemleri

datetime modülü, tarih ve zaman değerleriyle çalışmanızı sağlar. Tarihleri biçimlendirme, zaman aralıklarını hesaplama, görevleri belirli bir zamanda çalıştırma gibi işlemleri gerçekleştirebilirsiniz.


import datetime

# Şu anki tarih ve zamanı al
su_an = datetime.datetime.now()
print(f"Şu an: {su_an}")

# Tarihi biçimlendir
bicimlendirilmis_tarih = su_an.strftime("%Y-%m-%d %H:%M:%S")
print(f"Biçimlendirilmiş tarih: {bicimlendirilmis_tarih}")

# İki tarih arasındaki farkı hesapla
tarih1 = datetime.datetime(2023, 1, 1)
tarih2 = datetime.datetime(2023, 12, 31)
fark = tarih2 - tarih1
print(f"İki tarih arasındaki fark: {fark.days} gün")

requests Kütüphanesi: Web Verisi Çekme

requests kütüphanesi, HTTP istekleri göndermenizi sağlar. Web sitelerinden veri çekmek, API'lere bağlanmak ve web tabanlı otomasyon görevleri gerçekleştirmek için kullanabilirsiniz.


import requests

# Bir web sitesine GET isteği gönder
cevap = requests.get("https://www.example.com")

# Cevap durum kodunu kontrol et
if cevap.status_code == 200:
    print("İstek başarılı")

    # Cevap içeriğini al
    icerik = cevap.text
    #print(icerik) #Dikkatli kullanın, çok fazla çıktı olabilir.
else:
    print(f"İstek başarısız: {cevap.status_code}")

BeautifulSoup4 Kütüphanesi: HTML/XML Ayrıştırma

BeautifulSoup4 kütüphanesi, HTML ve XML belgelerini ayrıştırmanızı sağlar. Web sayfalarından belirli verileri çekmek, web kazıma (web scraping) işlemleri gerçekleştirmek için kullanabilirsiniz.


from bs4 import BeautifulSoup
import requests

# Bir web sitesinden HTML içeriğini çek
cevap = requests.get("https://www.example.com")
html_icerigi = cevap.text

# BeautifulSoup nesnesi oluştur
corba = BeautifulSoup(html_icerigi, "html.parser")

# Başlığı (title) bul
baslik = corba.find("title").text
print(f"Başlık: {baslik}")

# Tüm bağlantıları (a etiketleri) bul
for baglanti in corba.find_all("a"):
    print(baglanti.get("href"))

Selenium Kütüphanesi: Web Tarayıcı Otomasyonu

Selenium kütüphanesi, web tarayıcılarını kontrol etmenizi sağlar. Web sayfalarını otomatik olarak açabilir, formları doldurabilir, tıklamalar gerçekleştirebilir ve diğer tarayıcı işlemlerini otomatikleştirebilirsiniz. Web uygulamalarını test etmek, veri çekmek ve diğer web tabanlı otomasyon görevleri için kullanışlıdır.


from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# Chrome tarayıcısını başlat (chromedriver kurulu olmalı)
driver = webdriver.Chrome()

# Bir web sitesini aç
driver.get("https://www.google.com")

# Arama kutusunu bul ve bir şeyler yaz
search_box = driver.find_element("name", "q")
search_box.send_keys("Python otomasyon")
search_box.send_keys(Keys.RETURN)

# Bir süre bekle (sayfanın yüklenmesi için)
driver.implicitly_wait(5)

# Tarayıcıyı kapat
driver.quit()

Pandas Kütüphanesi: Veri Manipülasyonu ve Analizi

Pandas kütüphanesi, veri manipülasyonu ve analizi için güçlü araçlar sunar. Verileri okuma, filtreleme, dönüştürme, birleştirme ve analiz etme gibi işlemleri kolayca yapabilirsiniz. Özellikle Excel dosyaları, CSV dosyaları ve veritabanlarından veri okumak ve işlemek için kullanışlıdır.


import pandas as pd

# Bir CSV dosyasını oku
df = pd.read_csv("veri.csv")

# İlk 5 satırı göster
print(df.head())

# Bir sütunu filtrele
filtreli_df = df[df["sutun_adi"] > 10]
print(filtreli_df)

# Yeni bir sütun ekle
df["yeni_sutun"] = df["sutun_adi"] * 2
print(df)

# Veriyi Excel dosyasına yaz
df.to_excel("sonuc.xlsx", index=False)

Pratik Otomasyon Senaryoları

Python ile otomasyonun kullanılabileceği birçok senaryo bulunmaktadır. İşte en yaygın olanlarından bazıları:

Dosya Yönetimi Otomasyonu

Dosyaları otomatik olarak organize etmek, yeniden adlandırmak, kopyalamak, taşımak, silmek veya arşivlemek için Python kullanabilirsiniz. Örneğin, belirli bir klasördeki tüm resimleri yeniden boyutlandırabilir, belirli bir tarih aralığındaki dosyaları belirli bir klasöre taşıyabilir veya belirli bir formattaki dosyaları arayıp bulabilirsiniz.

Veri Çekme (Web Scraping) Otomasyonu

Web sitelerinden otomatik olarak veri çekmek için Python kullanabilirsiniz. Örneğin, bir e-ticaret sitesinden ürün fiyatlarını ve özelliklerini çekebilir, bir haber sitesinden haber başlıklarını ve özetlerini çekebilir veya bir sosyal medya sitesinden kullanıcı profillerini ve gönderilerini çekebilirsiniz.

E-posta Otomasyonu

E-postaları otomatik olarak göndermek, almak, yanıtlamak veya filtrelemek için Python kullanabilirsiniz. Örneğin, yeni bir abone kaydolduğunda otomatik olarak bir karşılama e-postası gönderebilir, belirli bir konudaki e-postaları otomatik olarak etiketleyebilir veya belirli bir gönderenden gelen e-postaları otomatik olarak silebilirsiniz.

Görev Zamanlama (Task Scheduling) Otomasyonu

Belirli görevleri belirli bir zamanda veya belirli aralıklarla otomatik olarak çalıştırmak için Python kullanabilirsiniz. Örneğin, her gün belirli bir saatte bir rapor oluşturabilir, her hafta sonu veritabanını yedekleyebilir veya her ayın sonunda faturaları gönderebilirsiniz.

Excel İşlemleri Otomasyonu

Excel dosyalarını otomatik olarak oluşturmak, okumak, düzenlemek veya dönüştürmek için Python kullanabilirsiniz. Örneğin, birden fazla Excel dosyasını birleştirebilir, belirli bir sütundaki verileri filtreleyebilir, yeni sütunlar ekleyebilir veya verileri farklı bir formata dönüştürebilirsiniz.

Clean Code Prensipleri ve Otomasyon

Otomasyon projeleri geliştirirken, kodun okunabilir, bakımı kolay ve sürdürülebilir olması önemlidir. Bu nedenle, clean code prensiplerini uygulamak büyük önem taşır. İşte otomasyon projelerinde dikkat etmeniz gereken bazı clean code prensipleri:

Anlamlı İsimler Kullanımı

Değişkenler, fonksiyonlar ve sınıflar için anlaşılır ve açıklayıcı isimler kullanın. İsimler, kodun ne yaptığını veya neyi temsil ettiğini açıkça belirtmelidir. Örneğin, `dosya_adi` yerine `kullanici_verileri_dosyasi` gibi daha açıklayıcı bir isim kullanmak, kodun anlaşılmasını kolaylaştırır.

Fonksiyonların Kısa ve Öz Olması

Fonksiyonlar, tek bir işi yapmalı ve kısa olmalıdır. Bir fonksiyonun çok fazla iş yapması, kodun okunmasını ve test edilmesini zorlaştırır. Fonksiyonları daha küçük parçalara ayırarak, kodun daha modüler ve bakımı kolay olmasını sağlayabilirsiniz.

Tekrar Eden Kodu Ortadan Kaldırma (DRY Prensibi)

Tekrar eden kodu ortadan kaldırın. Aynı kod parçasını birden fazla yerde kullanmak yerine, bir fonksiyon veya sınıf oluşturarak kodu tekrar kullanabilirsiniz. Bu, kodun daha kısa, daha kolay okunabilir ve bakımı daha kolay olmasını sağlar. DRY (Don't Repeat Yourself) prensibi, yazılım geliştirmenin temel ilkelerinden biridir.

Yorumların Doğru ve Güncel Olması

Kodun ne yaptığını veya neden yapıldığını açıklayan yorumlar ekleyin. Ancak, yorumların doğru ve güncel olduğundan emin olun. Yanlış veya eski yorumlar, kodun anlaşılmasını zorlaştırabilir ve hatalara yol açabilir. Kodu değiştirdiğinizde, yorumları da güncellemeyi unutmayın. Açıklayıcı isimler kullanmak, yorum ihtiyacını azaltabilir.

Versiyon Kontrol Sistemleri Kullanımı (Git gibi)

Kodunuzu versiyon kontrol sistemi (örneğin, Git) kullanarak yönetin. Versiyon kontrol sistemi, kodunuzdaki değişiklikleri takip etmenizi, farklı versiyonları karşılaştırmanızı ve gerekirse eski versiyonlara geri dönmenizi sağlar. Ayrıca, farklı kişilerle aynı proje üzerinde çalışmanızı kolaylaştırır. Git ve GitHub, en popüler versiyon kontrol sistemleridir.

Örnek Proje: Dosya Organizasyonu Otomasyonu

Bu bölümde, basit bir dosya organizasyonu otomasyonu projesi örneği ile öğrendiklerimizi pekiştirelim.

Proje Gereksinimleri

Projemizin amacı, belirli bir dizindeki dosyaları, dosya türlerine göre farklı alt dizinlere otomatik olarak taşımak olsun. Örneğin, `.txt` dosyalarını "Metinler" dizinine, `.jpg` dosyalarını "Resimler" dizinine, `.pdf` dosyalarını "PDFler" dizinine taşımak gibi.

Kod Örneği


import os
import shutil

def organize_files(source_dir):
    """Belirli bir dizindeki dosyaları, dosya türlerine göre alt dizinlere taşır."""

    for filename in os.listdir(source_dir):
        filepath = os.path.join(source_dir, filename)

        # Eğer bir dosya değilse (dizin ise) atla
        if not os.path.isfile(filepath):
            continue

        # Dosya uzantısını al
        dosya_adi, dosya_uzantisi = os.path.splitext(filename)
        dosya_uzantisi = dosya_uzantisi.lstrip(".").lower()  # Uzantıyı küçük harfe çevir ve '.' karakterini kaldır

        # Eğer uzantı yoksa atla
        if not dosya_uzantisi:
            continue

        # Hedef dizini oluştur
        hedef_dizin = os.path.join(source_dir, dosya_uzantisi)
        os.makedirs(hedef_dizin, exist_ok=True)

        # Dosyayı hedef dizine taşı
        hedef_dosya_yolu = os.path.join(hedef_dizin, filename)
        shutil.move(filepath, hedef_dosya_yolu)

        print(f"{filename} dosyası {hedef_dizin} dizinine taşındı.")

# Kullanım örneği:
kaynak_dizin = "organize_edilecek_dizin" # Düzenlenecek dizini buraya girin
os.makedirs(kaynak_dizin, exist_ok=True) #Dizini oluşturur (zaten yoksa)
organize_files(kaynak_dizin)

Kodun Açıklanması

  • organize_files(source_dir) fonksiyonu, belirli bir dizindeki dosyaları organize etmek için kullanılır.
  • os.listdir(source_dir) fonksiyonu, belirtilen dizindeki tüm dosya ve dizinlerin bir listesini döndürür.
  • os.path.isfile(filepath) fonksiyonu, belirtilen yolun bir dosya olup olmadığını kontrol eder.
  • os.path.splitext(filename) fonksiyonu, dosya adını ve uzantısını ayırır.
  • os.makedirs(hedef_dizin, exist_ok=True) fonksiyonu, belirtilen hedef dizini oluşturur. exist_ok=True parametresi, dizin zaten varsa hata vermemesini sağlar.
  • shutil.move(filepath, hedef_dosya_yolu) fonksiyonu, belirtilen dosyayı hedef dizine taşır.

İleri Seviye Konular ve Kaynaklar

Python ile otomasyon konusunda daha da derinleşmek isterseniz, aşağıdaki konuları ve kaynakları inceleyebilirsiniz:

Celery ile Asenkron Görevler

Celery, dağıtılmış görev kuyruğu sistemidir. Uzun süren veya yoğun işlem gerektiren görevleri arka planda çalıştırmak için kullanabilirsiniz. Özellikle web uygulamalarında, kullanıcı arayüzünü bloke etmeden görevleri işlemek için faydalıdır.

Docker ile Ortam Yönetimi

Docker, uygulamaları konteynerler içinde çalıştırmanızı sağlar. Otomasyon projelerinizin bağımlılıklarını ve ortamını yönetmek, farklı ortamlarda (geliştirme, test, üretim) aynı şekilde çalışmasını sağlamak için kullanabilirsiniz.

Bulut Tabanlı Otomasyon Platformları

AWS Lambda, Google Cloud Functions ve Azure Functions gibi bulut tabanlı otomasyon platformları, sunucusuz (serverless) ortamlarda otomasyon görevleri çalıştırmanızı sağlar. Bu platformlar, ölçeklenebilirlik, maliyet optimizasyonu ve kolay yönetim gibi avantajlar sunar.

Sonuç

Python, otomasyon sistemleri kurmak için güçlü ve çok yönlü bir araçtır. Tekrarlayan ve zaman alan görevleri otomatikleştirerek, verimliliğinizi artırabilir, hataları azaltabilir ve daha önemli işlere odaklanabilirsiniz. Bu makalede, Python ile otomasyonun temel prensiplerini, faydalarını ve pratik uygulamalarını ele aldık. Umarım, bu bilgiler size Python ile otomasyon projelerine başlamanız için ilham verir.

Reklam
Mehmet Akif - MAK MOBILE

Mehmet Akif - MAK MOBİLE Kurucusu

Teknoloji tutkunu, yazılım geliştirici ve minimalizm aşığı. MAK MOBİLE çatısı altında reklamsız, temiz ve kullanıcı odaklı mobil deneyimler tasarlıyorum.