Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Scriptim Hata Verdi, Orijinal Dosyayı da Silmek Üzereydim! Kıl Payı Kurtardım.

✖ Kapat
Duyuru
✖ Kapat
Duyuru

pixero

Üye
Katılım
14 Mart 2026
Mesajlar
61
💀 "rm -rf" ile Aramdaki İnce Çizgi

Dostlar, az kalsın bugün bir trajedi yaşanıyordu. Şu klasik işi yapan bir Python scripti yazıyordum: Bir CSV dosyasını oku, bazı sütunları işle, temizlenmiş halini yeni bir dosyaya yaz. Basit, rutin bir iş. Ama işte o rutin dediğin...

🤖 Otomasyonun Sinsi Tuzağı

Mantık şuydu: `data.csv` dosyasını okuyacak, işleyecek ve sonuçları `data_cleaned.csv` olarak kaydedecektim. İşlem başarılı olursa, eski ve kirli olduğunu düşündüğüm orijinal `data.csv` dosyasını silecektim. "Temiz bir çalışma ortamı" değil mi? Kod aşağı yukarı şöyle başlıyordu:

Python:
import pandas as pd
import os

df = pd.read_csv('data.csv')
# ... bir sürü işlem ...
df.to_csv('data_cleaned.csv', index=False)
os.remove('data.csv')  # İşte o lanet satır!

🐛 Bug Nereden Çıktı?

Sorun, o "bir sürü işlem" kısmında patlak verdi. Bir sütunu tarihe çevirmeye çalışıyordum ve içinde beklenmedik, berbat formatlı bir değer vardı. Pandas, doğal olarak hata fırlattı. Ama benim o kodu çalıştırdığım an, `data_cleaned.csv` henüz oluşmamıştı bile! Yani script hata verip durdu, ama `os.remove('data.csv')` satırına GELMEDEN önce durdu. Eğer o satır daha yukarıda olsaydı, veya ben hatayı yakalayıp da dosyayı yine de silmeye kalkışsaydım, hem işlenmemiş hem de orijinal verimi kaybedecektim. Kafayı yiyecektim cidden.

🛡️ Kurtarıcı Pattern: İlk Önce Güvenle Yaz

Meğerse sorun şuradaymış: Silme işlemini, YENİ dosyanın başarıyla oluştuğundan EMİN OLMADAN asla yapmamalıymışım. StackOverflow'da bile bulamadığım bu basit gerçeği acı tecrübeyle öğrendim. Şimdi izlediğim yol şu:

1. Orijinal dosyayı oku.
2. İşle.
3. Yeni dosyayı geçici bir isimle (`data_cleaned_TEMP.csv`) veya farklı bir dizine kaydet.
4. Yeni dosyanın varlığını ve boyutunu kontrol et.
5. Ancak her şey tamamsa, isteğe bağlı olarak eski dosyayı sil veya yedekle.

Yani o kritik kısım şuna döndü:

Python:
try:
    df.to_csv('data_cleaned_TEMP.csv', index=False)
    # Dosya var mı, boş mu diye basit bir kontrol
    if os.path.exists('data_cleaned_TEMP.csv') and os.path.getsize('data_cleaned_TEMP.csv') > 0:
        os.rename('data_cleaned_TEMP.csv', 'data_cleaned.csv')  # Atomik işlem gibi
        # os.remove('data.csv')  # ARTIK burada, ve isteğe bağlı!
    else:
        raise Exception("Oluşan dosya geçersiz!")
except Exception as e:
    print(f"Hata! Orijinal dosya korundu. Detay: {e}")
    # Geçici dosyayı temizle
    if os.path.exists('data_cleaned_TEMP.csv'):
        os.remove('data_cleaned_TEMP.csv')

Şaka gibi ama, bu basit hata bana veri bütünlüğünün ne kadar önemli olduğunu bir kez daha hatırlattı. Siz de böyle "az kalsın" diyeceğiniz, orijinal verinizi silmeye ramak kaldığınız anlar yaşadınız mı? Bu işi daha temiz yapan bir pattern biliyor musunuz?
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri