Dosyalar, modüller ve hatalar
Dosya okuma ve yazma, modüller, paketler ve hata yönetimi.
Seviye 201 · 19 ders · 21 pratik lab
Dersler
Betikler ve dosya sistemi
- REPL ve çalıştırılabilir betikler: Python'u etkileşimli kabukta (REPL) denemeyi ve kodu doğrudan çalıştırılabilen bir betik dosyasına dönüştürmeyi öğrenirsin.
- os ve shutil ile dosya ve klasör işleri: os ve shutil modülleriyle dosya ve klasör oluşturma, kopyalama, taşıma ve silme işlerini betikle yapmayı öğrenirsin.
- pathlib ile klasör ağacında gezinmek
- JSON okumak, değiştirmek, kaydetmek: Ayarları JSON dosyasından okuyup değiştirmeyi ve geri kaydetmeyi, bozuk bir dosyayı fark etmeyi öğrenirsin.
- Yarım kalmayan yazma: geçici dosya ve yeniden adlandırma
- Kısa görev: eski dosyaları arşivleyen betik
Modüller ve paketler
- Python modülleri nerede arar: sys.path
- Paketler, __init__.py ve göreli içe aktarma
- subprocess ile komut çalıştırıp çıktı yakalamak: Python içinden bir sistem komutu çalıştırıp çıktısını ve hata durumunu güvenle yakalamayı öğrenirsin.
- urllib ile ağ ve servis denetimi: urllib ile bir web servisine istek atıp yanıt kodunu kontrol eden basit bir ağ ve servis denetimi yazmayı öğrenirsin.
- Kısa görev: yardımcı fonksiyonlarını pakete dönüştür
Hatalar ve güvenli girdi
- Hata yönetimi: Programın beklenmedik durumlarda çökmeden hatayı yakalayıp anlamlı bir mesajla devam etmesini sağlamayı öğrenirsin.
- Özel hata sınıfları ve hata zinciri: Kendi hata türlerini tanımlar, alttaki hatayı kaybetmeden yeniden fırlatır ve sorunun nedenini açık biçimde bildirirsin.
- pdb ile adım adım hata ayıklamak: Kodu pdb ile satır satır çalıştırır, kesme noktası koyar ve değişkenlerin değerini izleyerek hatanın kaynağını bulursun.
- Girdi doğrulama: güvenilmeyen veriyi işlemeden önce denetlemek: Kullanıcıdan ve dosyadan gelen veriyi tür, uzunluk ve izin verilen değerler açısından doğrulayan işlevler yazarsın.
- Güvenli komut çalıştırma: shell=True’dan kaçınmak: Dışarıdan gelen değerlerin komuta karışıp istenmeyen işlere yol açmasını argüman listesi kullanarak önlersin.
- Güvenli veri yükleme: pickle riski ve yaml.safe_load: Güvenilmeyen dosyaları yüklerken kod çalıştırabilen biçimlerden kaçınır, JSON ve safe_load gibi güvenli yolları seçersin.
- Kısa görev: bozuk yapılandırma dosyasına dayanıklı yükleyici
Bitirme
- Bitirme görevi: sistem sağlık denetim betiği: Kurgusal bir şirkette disk, bellek ve servis durumunu denetleyip özet yazan küçük bir sistem sağlık betiği hazırlarsın.
Pratik lablar
- Adet alanını aralığa göre doğrulamak: Metin olarak gelen adet değerini tam sayıya çevirip 1-99 aralığını denetleyen, hatada alan adını içeren ValueError yükselten fonksiyonu yaz.
- İç içe siparişte tüm hataları toplamak: İç içe sipariş verisini doğrularken ilk hatada durma; tüm hataları 'kalemler[2].adet' gibi yollarıyla topla ve tek bir istisnada sun.
- Uzantıya göre dosya bulmak: pathlib ile bir klasör ağacındaki .log dosyalarını bulup boyutlarıyla birlikte büyükten küçüğe döndüren fonksiyonu yaz.
- İndirilenler klasörünü düzenlemek: Dosyaları uzantılarına göre alt klasörlere taşıyan ve aynı adlı dosyanın üzerine yazmayan betiği shutil ve pathlib ile tamamla.
- Bağlantı döngüsüne takılmadan klasör boyutu ölçmek: Sembolik bağlantılar ve erişim hataları içeren bir ağaçta toplam boyutu döngüye girmeden ve çökmeden hesaplayan fonksiyonu yaz.
- JSON dosyasında alan güncellemek: Kullanıcı kayıtlarının tutulduğu JSON dosyasında bir alanı değiştirip dosyayı girintili biçimde geri kaydeden fonksiyonu yaz.
- Ayar dosyasını yarım kalmadan kaydetmek: Geçici dosya ve os.replace kullanarak ayarları kaydeden fonksiyonu yaz; testler yazma ortasında hata çıksa bile eski dosyanın sağlam kaldığını denetler.
- JSON envanterini yedekli birleştirmek: İki JSON envanterini birleştirmeden önce yedek alan, bozuk JSON'da işlemi geri alan ve sonucu atomik yazan fonksiyonu yaz.
- Paketin dışa açtığı adları belirlemek: Dağınık yardımcı modülleri __init__.py ve __all__ ile tek bir paket arayüzünde topla; testler yalnızca belgelenen adların dışa açıldığını doğrular.
- Göreli içe aktarma hatasını düzeltmek: Doğrudan çalıştırılınca ImportError veren paket içi modülü göreli içe aktarmalar ve python -m ile çalışır hale getir.
- Gölgelenen modül adını bulmak: Projedeki json.py adlı bir dosya yüzünden bozulan içe aktarmayı sys.path sırasını inceleyerek bul ve düzelt; testler doğru modülün yüklendiğini doğrular.
- Komut çıktısını yakalamak: subprocess.run ile df çıktısını yakalayıp kullanım yüzdesi en yüksek bağlama noktasını döndüren fonksiyonu yaz.
- Yerel servisin sağlık ucunu denetlemek: urllib ile labda çalışan yerel servise zaman aşımlı istek atıp durum kodunu ve yanıt süresini raporlayan, bağlantı hatasında çökmeyen fonksiyonu yaz.
- Kullanıcı girdili komutu kabuksuz çalıştırmak: Kullanıcıdan ana makine adı alıp shell=True ile ping çalıştıran aracı argüman listesine ve girdi doğrulamasına geçirerek güvenli hale getir.
- Sipariş için özel istisna sınıfı yazmak: Stok yetersizliğinde ürün kodunu ve eksik miktarı taşıyan bir istisna sınıfı tanımla ve sipariş fonksiyonunda kullan.
- İstisnaları zincirleyerek bağlam eklemek: Alt katmandaki ValueError'ı raise from ile kendi ConfigError sınıfına saran yükleyiciyi yaz; testler özgün nedenin korunduğunu denetler.
- Kayıt formu verisini doğrulamak: Ad, yaş ve e-posta alanlarını tür, aralık ve biçim yönünden denetleyip bütün hataları tek seferde döndüren doğrulayıcıyı yaz.
- Güvensiz YAML yüklemesini kapatmak: yaml.load ve pickle ile dışarıdan veri okuyan içe aktarma modülünü yaml.safe_load ve JSON'a geçir; testler nesne oluşturmaya çalışan girdilerin reddedildiğini doğrular.
- Hata sınıflarıyla yeniden deneme kararı vermek: İçe aktarma aracı için geçici ve kalıcı hataları ayıran küçük bir istisna hiyerarşisi kur; yalnızca geçici hatalar en çok üç kez yeniden denensin ve asıl neden zincirde korunsun.
- INI ayarlarını doğru türle okumak: configparser ile okunan ayar dosyasındaki port değerini tam sayıya, hata ayıklama bayrağını mantıksal değere çevir; eksik anahtarlarda varsayılan değer kullanılsın.
- Yüklenen ayarlarda zorunlu alanları denetlemek: Dosyadan yüklenen ayar sözlüğünde zorunlu anahtarları ve türlerini denetleyen fonksiyonu yaz; eksik ve yanlış türdeki alanların hepsi tek bir hata iletisinde listelensin.
Kurs hakkında
Dosya okuma ve yazma, modüller, paketler ve hata yönetimi.
Ne öğreneceksin
- Betikler ve dosya sistemi
- Modüller ve paketler
- Hatalar ve güvenli girdi
- Bitirme
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 201 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.