Her sabah aynı raporu indiriyor, aynı klasörü temizliyor ve aynı API'yi elle çağırıyorsan zamanını boşa harcıyorsun. Bu işler tekrar ettikçe hata yapma ihtimalin de artar. Bilgisayar tekrarı senden daha iyi yapar.Python ile otomasyon tam da bu noktada devreye girer. Birkaç satır kodla dosyaları düzenleyebilir, API'lerden veri çekebilir ve görevleri belirli saatlerde çalıştırabilirsin. Bu yazıda geliştiricilerin günlük işine yarayan somut örnekler var. Her örnek kopyala, çalıştır ve kendi işine uyarla mantığında.Python'un standart kütüphanesi bu işlerin çoğunu zaten karşılar. Harici paket kurmadan önce resmi standart kütüphane belgelerine göz atmanı öneririm. os, pathlib ve subprocess gibi modüller çok iş görür.
Python ile otomasyon için dosya işleme
Klasörleri elle düzenlemek can sıkıcıdır. İndirilenler klasörün dağılmışsa Python birkaç saniyede toplar. Python ile otomasyon konusunda en sık başlanan yer dosya işleridir. Aşağıdaki script dosyaları uzantılarına göre alt klasörlere taşır.
from pathlib import Path
import shutil
kaynak = Path.home() / "Downloads"
kurallar = {
"resimler": [".jpg", ".png", ".gif"],
"belgeler": [".pdf", ".docx", ".txt"],
"arsivler": [".zip", ".tar", ".gz"],
}
for dosya in kaynak.iterdir():
if not dosya.is_file():
continue
for klasor, uzantilar in kurallar.items():
if dosya.suffix.lower() in uzantilar:
hedef = kaynak / klasor
hedef.mkdir(exist_ok=True)
shutil.move(str(dosya), str(hedef / dosya.name))Bu örnek pathlib kullanır, çünkü yol işlemleri için daha okunaklıdır. shutil modülü taşıma ve kopyalama işini güvenle yapar. Aynı mantığı log dosyalarını arşivlemek veya eski yedekleri silmek için de kullanabilirsin.
API çağrıları: veriyi otomatik çek
Çoğu modern servis bir REST API sunar. Bu API'leri elle çağırmak yerine bir script ile düzenli olarak veri toplayabilirsin. requests kütüphanesi bu iş için fiili standarttır.
import requests
def doviz_kuru_al(kod="USD"):
url = f"https://api.example.com/rates/{kod}"
try:
yanit = requests.get(url, timeout=10)
yanit.raise_for_status()
return yanit.json()["rate"]
except requests.RequestException as hata:
print(f"Istek basarisiz: {hata}")
return None
kur = doviz_kuru_al("EUR")
if kur:
print(f"Guncel kur: {kur}")Dikkat edilmesi gereken iki nokta var. Birincisi timeout vermek, çünkü yanıt vermeyen bir sunucu scriptini sonsuza kadar bekletebilir. İkincisi hata yakalamak, çünkü ağ her zaman çalışmaz. Bu iki alışkanlık scriptlerini çok daha sağlam yapar.
Zamanlanmış görevler: doğru aracı seç
Bir scripti her gün otomatik çalıştırmak istersen iki yol var. Birincisi işletim sisteminin zamanlayıcısı, ikincisi Python içi bir kütüphane. Hangisini seçeceğin işin yapısına bağlıdır.
YöntemUygun olduğu durumSınırı
cron / Task Scheduler | Basit, tek seferlik günlük işler | İşletim sistemine bağımlı
schedule kütüphanesi | Program açık kalan, çapraz platform işler | Program durunca görevler de durur
APScheduler | Kalıcı, karmaşık zamanlama ihtiyaçları | Kurulumu daha ağır
Sunucuda çalışan basit bir günlük iş için cron genellikle en sağlam seçimdir. Programın sürekli ayakta kalması gerekiyorsa schedule kütüphanesi daha pratiktir. İşte küçük bir örnek.
import schedule
import time
def yedek_al():
print("Yedekleme calisiyor...")
schedule.every().day.at("03:00").do(yedek_al)
schedule.every(10).minutes.do(yedek_al)
while True:
schedule.run_pending()
time.sleep(60)Web scraping ve sysadmin scriptleri
Bir API yoksa veriyi doğrudan sayfadan çekmek gerekebilir. Bunun için BeautifulSoup yaygın bir tercihtir. Aşağıdaki örnek bir sayfadan tüm başlıkları toplar.
import requests
from bs4 import BeautifulSoup
yanit = requests.get("https://example.com", timeout=10)
corba = BeautifulSoup(yanit.text, "html.parser")
for baslik in corba.find_all("h2"):
print(baslik.get_text(strip=True))Scraping yaparken siteyi yormamaya dikkat et. İstekler arasına gecikme koy ve sitenin robots.txt kurallarına saygı göster. Sistem yönetimi tarafında ise subprocess modülü işini görür.
- Disk kontrolü: subprocess ile df komutunu çağırıp boş alanı izle.
- Servis durumu: systemctl çıktısını okuyup servis düşerse uyarı gönder.
- Log temizliği: belli yaştan eski log dosyalarını otomatik sil.
Bu küçük scriptler bir araya geldiğinde elle yaptığın işin çoğunu ortadan kaldırır. Önemli olan başlamak ve her tekrar eden işi bir scripte dönüştürmek. Zamanla kendi araç kutunu oluşturursun.Scriptlerini sürüm kontrolünde tut ve düzenli olarak gözden geçir. İyi bir günlük kaydı eklemek de işini kolaylaştırır. Bir görev hata verdiğinde nedenini hızlıca görebilirsin. Bu küçük alışkanlıklar otomasyonu uzun vadede güvenilir kılar.
Özet ve sonraki adım
Python ile otomasyon karmaşık bir konu değildir. Dosya işleme, API çağrıları, zamanlanmış görevler ve scraping için gereken araçların çoğu standart kütüphanede hazır bekler. Küçük bir scriptle başla, çalıştığını gör ve adım adım büyüt.Bu otomasyonları üretim ortamında güvenle çalıştırmak ister misin? Kritm Cloud Solutions olarak özel Python yazılımı geliştiriyor ve bunları bulut ile VPS altyapısında ayağa kaldırıyoruz. Hizmetlerimizi incele ya da projeni konuşmak için bizimle iletişime geç.
