Python ile dosya biçimleri: CSV, JSON, YAML, XML, SQLite
Günlük işte karşılaşılan veri biçimlerini okur, yazar, dönüştürür; arşivler ve ikili dosyalarla güvenle çalışırsın.
Seviye 201 · 17 ders · 21 pratik lab
Dersler
Metin tabanlı biçimler
- CSV lehçeleri, başlıklar ve DictReader
- CSV formül enjeksiyonu ve güvenli dışa aktarım
- JSON: özel kodlayıcı, tarih ve ondalık değerler
- JSON verisini şemayla doğrulamak
- YAML, TOML ve INI yapılandırma dosyaları
- Kısa görev: INI yapılandırmasını TOML'a taşı
XML ve elektronik tablolar
- ElementTree ile XML okumak ve yazmak
- Güvenli XML ayrıştırma: dış varlıklar ve defusedxml
- openpyxl ile Excel dosyaları
- Kısa görev: XML envanterini CSV'ye dök
Veritabanı, arşiv ve ikili dosyalar
- sqlite3 ile gömülü veritabanı
- zipfile ve tarfile ile arşivler
- Arşiv açarken yol aşımı (Zip Slip) ve korunma
- Sıkıştırma: gzip, bz2 ve lzma
- struct ile ikili kayıt okumak
- Kısa görev: yedek arşivlerinin içerik dizinini SQLite'a yaz
Bitirme
- Bitirme görevi: biçimler arası güvenli veri dönüştürücü
Pratik lablar
- Ayar dosyasıyla yönetilen biçim dönüştürücü: TOML dosyasındaki tanıma göre sıkıştırılmış CSV'yi satır satır JSON Lines'a çeviren, tür dönüşümü yapan ve bozuk satırları ayrı dosyaya yazan aracı tamamla.
- Noktalı virgüllü CSV'yi okumak: Noktalı virgül ayraçlı ve virgüllü ondalıklı bir satış dosyasını DictReader ile okuyup toplam tutarı hesapla.
- Başlığı eksik ve fazla sütunlu satırları ele almak: Başlık adları değişen ve bazı satırlarında fazla sütun olan CSV'yi tek bir şemaya oturt; sorunlu satırları ayrı raporla.
- Dışa aktarımda formül enjeksiyonunu engellemek: Kullanıcı girdisi içeren CSV dışa aktarımında =, +, - ve @ ile başlayan hücreleri zararsız hale getir ve testleri geçir.
- Tarih ve Decimal içeren kaydı JSON'a yazmak: datetime ve Decimal alanlarını doğru yazan özel bir JSON kodlayıcı yaz ve geri okununca değerlerin aynı kaldığını test et.
- Sipariş verisini şemayla doğrulamak: Sipariş kayıtları için bir JSON şeması yaz ve hatalı kayıtlarda hangi alanın neden reddedildiğini listele.
- TOML ayarlarını katmanlı okumak: Varsayılan, ortam ve yerel TOML dosyalarını sırayla birleştiren yükleyiciyi yaz; iç içe tablolar derinlemesine birleşsin.
- YAML'ı güvenli yükleyip türleri denetlemek: yaml.load kullanan ayar okuyucusunu safe_load'a geçir ve "no" gibi değerlerin yanlış türe dönüşmesini yakala.
- XML faturalardan toplam çıkarmak: ElementTree ile ad alanlı bir fatura XML'inden kalem tutarlarını okuyup toplamı hesapla.
- XML okuyucusunu dış varlıklara kapatmak: Dışarıdan gelen XML'i okuyan fonksiyonu defusedxml ile değiştir ve varlık içeren örnek dosyanın reddedildiğini test et.
- Excel yoklama dosyasını özetlemek: openpyxl ile birleştirilmiş hücreli ve çok sayfalı yoklama dosyasını oku, kişi başı devamsızlığı yeni bir sayfaya yaz.
- CSV'yi SQLite tablosuna aktarmak: Bir ürün CSV'sini executemany ile SQLite tablosuna aktar ve kategori başına ürün sayısını sorgula.
- Arşivi hedef klasör dışına taşmadan açmak: tar arşivini açarken ../ içeren ve mutlak yollu üyeleri reddeden güvenli bir açma fonksiyonu yaz.
- Sıkıştırılmış günlüğü açmadan saymak: gzip dosyasını diske açmadan satır satır okuyup hata satırlarını say; bozuk arşivde anlaşılır hata ver.
- İkili sensör kayıtlarını struct ile çözmek: Sabit boyutlu küçük-uçlu sensör kayıtlarını struct.iter_unpack ile oku ve yarım kalan son kaydı hata olarak bildir.
- Zip arşivini doğrulayarak güncellemek: Bir zip arşivindeki tek dosyayı diske açmadan yenisiyle değiştir, tüm üyelerin CRC denetimini yap ve bildirilen toplam açık boyutu sınırı aşan arşivleri reddet.
- TOML ayar dosyasını okumak: tomllib ile bir ayar dosyasını oku; tablo içindeki sunucu adını, port sayısını ve etiket listesini doğru türleriyle döndüren fonksiyonu yaz.
- Büyük XML dosyasını akış olarak işlemek: Yüz binlerce kayıt içeren XML dosyasını iterparse ile oku ve işlenen öğeleri temizle; testler hem toplamı hem bellek sınırını denetler.
- Kayıtları Excel dosyasına yazmak: openpyxl ile kayıt listesinden başlık satırı olan bir sayfa üret; tarihler tarih, tutarlar sayı hücresi olarak yazılsın ve dosya yeniden okununca türler korunsun.
- Sabit bir başlığı struct ile paketlemek: Sürüm numarası, kayıt sayısı ve bayraklardan oluşan sekiz baytlık başlığı struct.pack ile üret ve unpack ile aynı değerleri geri oku.
- Ses dosyası başlığını struct ile okumak: Bir WAV dosyasının başlığından kanal sayısını, örnekleme hızını ve bit derinliğini doğru bayt sırasıyla çıkar; imzası yanlış olan dosya reddedilsin.
Kurs hakkında
Günlük işte karşılaşılan veri biçimlerini okur, yazar, dönüştürür; arşivler ve ikili dosyalarla güvenle çalışırsın.
Ne öğreneceksin
- Metin tabanlı biçimler
- XML ve elektronik tablolar
- Veritabanı, arşiv ve ikili dosyalar
- 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.