Python ile Rutin İşlerin Otomasyonuna Nereden Başlanır?
Python kullanarak rutin görevlerin otomasyonuna bugün başlayabilirsiniz: yorumlayıcıyı kurun, sanal bir ortam oluşturun ve dosyalar veya verilerle çalışmak için basit bir betik yazın. Okunabilir sözdizimi ve saatlerce süren manuel işi birkaç satır kodla değiştirmenizi sağlayan devasa hazır çözüm kütüphanesi sayesinde bu dil, yeni başlayanlar için idealdir.
Bu rehberde, karmaşık teorilerden kaçınarak ve pratik faydaya odaklanarak, ilk görevi seçmekten betiği zamanlanmış olarak çalıştırmaya kadar olan süreci inceleyeceğiz.
Temel ilke: Her şeyi aynı anda otomatikleştirmeye çalışmayın. En sık tekrarlanan ve sizi en çok rahatsız eden tek bir görevi seçin ve ondan başlayın.
1. Adım: Otomasyon İçin Görevlerin Belirlenmesi
Kod yazmadan önce, tam olarak neyin otomatikleştirileceğini anlamak gerekir. Otomasyon için iyi bir aday üç özelliğe sahiptir: tekrarlanabilirlik, net eylem algoritması ve yaratıcı karar alma gerektirmemesi.
Düzenli olarak gerçekleştirdiğiniz 3–5 süreçten oluşan bir liste hazırlayın:
- "İndirilenler" klasöründeki dosyaları kategorilere göre taşıma.
- Günlük raporları veya döviz kurlarını indirme.
- Fotoğrafları veya belgeleri toplu olarak yeniden adlandırma.
- Farklı alıcılara aynı e-postaları veya mesajları gönderme.
- Web sitelerinden veri toplama (web kazıma).
Her görevi "manuel yürütme süresi" ile "betik yazma süresi" kriterlerine göre değerlendirin. Eğer betik bir hafta içinde kendini amorti ediyorsa, bu harika bir başlangıçtır.
2. Adım: Çalışma Ortamının Hazırlanması
Çalışmanız için programlama dilinin kendisine ve kullanışlı bir geliştirme ortamına ihtiyacınız olacak. İşletim sisteminin çalışmasını bozmamak için sistem Python'unu doğrudan kullanmayın.
- Python Kurulumu: Güncel sürümü python.org resmi web sitesinden indirin. Windows'ta kurulum sırasında mutlaka "Add Python to PATH" kutucuğunu işaretleyin.
- Kod Düzenleyici: VS Code veya PyCharm Community Edition'ı yükleyin. Bunlar sözdizimi vurgulama, otomatik tamamlama ve yerleşik terminal özelliklerine sahiptir.
- Sanal Ortam: Bu, projenizin bağımlılıkları için izole edilmiş bir klasördür. Terminalde aşağıdaki komutla oluşturun:
python -m venv venv
```
Çalışmadan önce ortamı etkinleştirin:
* Windows: `venv\Scripts\activate`
* macOS/Linux: `source venv/bin/activate`
Artık tüm kütüphaneler sadece bu projeye yüklenecek ve sistemi kirletmeyecektir.
## 3. Adım: Temel Kütüphane Seti
Python'un gücü ekosistemindedir. Başlangıç için karmaşık çerçevelere ihtiyacınız yoktur; standart kütüphane ve birkaç popüler paket yeterlidir.
<div class="table-container"><table style="border-collapse: collapse; width: 100%; margin: 16px 0;"><thead><tr><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">Görev</th><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">Önerilen Kütüphane</th><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">Amaç</th></tr></thead><tbody><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Dosya ve yollarla çalışma</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">pathlib</code>, <code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">shutil</code></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Dosyaları taşıma, silme, yeniden adlandırma</td></tr><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">İşletim sistemiyle çalışma</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">os</code>, <code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">subprocess</code></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Sistem komutlarını çalıştırma, süreçleri yönetme</td></tr><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">İnternet istekleri</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">requests</code>, <code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">httpx</code></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">API'den veri alma, dosya indirme</td></tr><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Tablo işleme</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">pandas</code>, <code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">openpyxl</code></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Excel/CSV okuma ve yazma, veri analizi</td></tr><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Tarayıcı yönetimi</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">selenium</code>, <code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">playwright</code></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Sitelerde düğmelere tıklama, form doldurma</td></tr><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Planlama</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">schedule</code>, <code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">APScheduler</code></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Betikleri kod içinde zamanlayıcıyla çalıştırma</td></tr></tbody></table></div>
Gerekli paketleri `pip` paket yöneticisi aracılığıyla yükleyin:
```bash
pip install requests pandas
4. Adım: İlk Betiğiniz: Dosyaları Sınıflandırma
Gerçek bir örneği ele alalım: "İndirilenler" klasörünü düzenleyen, resimleri bir klasöre, belgeleri başka bir klasöre taşıyan bir betik.
organizer.py adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:
from pathlib import Path
import shutil
# Dosyaların bulunduğu klasörün yolu
download_folder = Path.home() / "Downloads"
# Sınıflandırma klasörleri
images_folder = download_folder / "Images"
docs_folder = download_folder / "Documents"
# Klasörler yoksa oluştur
images_folder.mkdir(exist_ok=True)
docs_folder.mkdir(exist_ok=True)
# Dosya uzantıları
image_exts = {'.jpg', '.png', '.gif', '.jpeg'}
doc_exts = {'.pdf', '.docx', '.txt'}
# Dosyaları dolaş
for file in download_folder.iterdir():
if file.is_file():
if file.suffix.lower() in image_exts:
shutil.move(str(file), str(images_folder / file.name))
print(f"Görsel taşındı: {file.name}")
elif file.suffix.lower() in doc_exts:
shutil.move(str(file), str(docs_folder / file.name))
print(f"Belge taşındı: {file.name}")
Betiği python organizer.py komutuyla çalıştırın. Dakikalarca süren manuel emeğinizi anında yerine getirecektir.
Betikleri her zaman verilerin bir kopyası üzerinde veya özel olarak oluşturulmuş bir test klasöründe test edin. Mantık hatası önemli dosyaları yanlışlıkla silebilir.
5. Adım: Otomatik Çalıştırmanın Ayarlanması
Yazılan betik, manuel olarak çalıştırılması gerekiyorsa işe yaramaz. Sistemin bunu sizin yerinize yapmasını sağlayın.
- Windows: "Görev Zamanlayıcı"yı (Task Scheduler) kullanın. Temel bir görev oluşturun, Python yürütülebilir dosyasının yolunu (
python.exe) belirtin ve argüman olarak betiğinizin yolunu girin. Tetikleyiciyi ayarlayın (örneğin, "Günlük" veya "Sisteme giriş yapıldığında"). - macOS / Linux:
cronyardımcı programını kullanın.crontab -ekomutuyla düzenleyiciyi açın ve her gün sabah 9'da çalışacak şekilde bir satır ekleyin:
0 9 * * * /usr/bin/python3 /path/to/organizer.py
```
Daha karmaşık senaryolar için, kodun içinde saf Python ile zamanlama mantığı yazmanıza olanak tanıyan `schedule` kütüphanesini kullanabilirsiniz.
## Yeni Başlayanların Sık Yaptığı Hatalar
* **Parolaları kodda saklamak.** Giriş bilgilerini, parolaları veya API anahtarlarını asla doğrudan betiğe yazmayın. Çevre değişkenlerini (`python-dotenv` kütüphanesi) veya `.gitignore` listesine eklenen ayrı yapılandırma dosyalarını kullanın.
* **Hata işlemenin olmaması.** İnternet bağlantısı kesilebilir, dosya başka bir program tarafından kullanılıyor olabilir. Betiğin tamamen çökmemesi ve hatayı yalnızca günlüğe kaydetmesi için kritik kod bölümlerini `try...except` yapılarına alın.
* **Monolitik betikler.** Her şeyi 500 satırlık tek bir dosyaya yazmayın. Mantığı ayırın: bir fonksiyon indirsin, diğeri işlesin, üçüncüsü kaydetsin. Bu, hataları bulmayı kolaylaştırır.
Otomasyon, büyük ölçekli hataları affetmez. Dosyaları yanlış silen bir betik, bunu saniyede binlerce kez yapacaktır. Betiğin eylemleri gerçekleştirmeden sadece ne yapacağını gösterdiği "kuru çalışma" (dry-run) modunu veya onay mekanizmasını her zaman ekleyin.
SSS
Python ile otomasyon için matematik bilmek gerekir mi? Hayır. Çoğu rutin görev (dosyalar, metin, web) için temel mantık ve çözüm arama becerisi yeterlidir. Karmaşık matematik yalnızca veri analizi ve makine öğrenimi için gereklidir.
Hangi kütüphaneye ihtiyacım olduğunu nasıl öğrenebilirim? Görevi İngilizce olarak net bir şekilde ifade edin ve "python library" kelimesini ekleyin. Örneğin, "python library to read excel files". Topluluk çok aktiftir ve görevlerin %99'u için hazır çözümler mevcuttur.
API'si olmayan programlardaki eylemler otomatikleştirilebilir mi?
Evet. Klavye tuşlarına basmayı ve fare tıklamalarını taklit etmek için pyautogui veya keyboard kütüphaneleri kullanılır. Ancak bu yöntem, ekran çözünürlüğüne ve pencere konumuna bağlı olduğu için API veya dosyalarla çalışmaktan daha az güvenilirdir.
Betiklerimi nerede saklamalıyım? Git gibi sürüm kontrol sistemlerini ve GitHub veya GitLab gibi hizmetleri kullanın. Bu, değişiklik geçmişini korumanızı, çalışan sürümlere geri dönmenizi ve kodu cihazlar arasında senkronize etmenizi sağlar.