Ana Sayfa · Akademi · Robotik ve Kodlama · Python Temelleri · Dosyalarla Çalışmaya Giriş

Dosyalarla Çalışmaya Giriş

with open ile metin dosyalarını güvenle okuyup yazmayı öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Bir metin dosyasına yazmayı ve o dosyayı geri okumayı öğreniyoruz; böylece program kapansa bile verilerimiz kaybolmaz.

Üretilecek kanıt

Küçük bir "not defteri" programı yazacağız: kullanıcıdan üç not alacak, bunları bir dosyaya yazacak ve sonra numaralandırarak geri okuyacak. notlar = [] for i in range(3): yeni = input(f"{i + 1}. notu yaz: ") notlar.append(yeni) with open("defter.txt", "w") as f: for madde in notlar: f.write(madde + "\n") print("\nDefterin içeriği:") with open("defter.txt",…

Kontrol tuzağı

\n koymayı unutmak Her f.write(...) çağrısına satır sonu eklemezsen bütün maddeler tek satırda birleşir: Süt alKitabı geri ver . Her satırın sonuna \n eklemeyi alışkanlık hâline getir. "w" ile istemeden veri silmek Var olan bir dosyayı "w" kipiyle açmak eski içeriği anında siler. Not eklemek istiyorsan "a" , sadece…

Sonraki bağlantı

Rastgelelik ve Basit Oyun Mantığı: random modülüyle zar atmayı, rastgele seçim yapmayı ve ilk küçük tahmin oyununu kurmayı öğreneceğiz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre30–45 dk
Ön koşulHata Mesajlarını Okumak
İçerikStandart ders · 1.382 kelime
Son güncelleme

Bir cümlelik özet

Bir metin dosyasına yazmayı ve o dosyayı geri okumayı öğreniyoruz; böylece program kapansa bile verilerimiz kaybolmaz.

Neden önemli?

Şimdiye kadar yazdığın programlar çalışıp bittiğinde her şeyi unuturdu. Bir sayı girdin, ekrana bir şey yazıldı ve program kapandı. Ertesi gün aynı programı açtığında hiçbir şey hatırlamıyordu.

Gerçek uygulamalar böyle çalışmaz. Bir oyun en yüksek skorunu, bir uygulama senin ayarlarını, bir robot ise topladığı ölçümleri saklamak ister. Bunu yapmanın en basit yolu, veriyi bir dosyaya yazmaktır.

Dosya, bilgisayarın diskinde saklanan ve isimlendirilmiş bir bilgi kutusudur. Program kapansa bile dosya diskte kalır. Bu derste .txt uzantılı düz metin dosyalarıyla çalışacağız; çünkü bunlar okunması ve anlaşılması en kolay dosyalardır.

Kısa tanım: Dosya, program kapansa bile diskte kalan, isimlendirilmiş bir bilgi saklama alanıdır.

Dosyaya yazmak ve dosyadan okumak

with open(...) kalıbı

Bir dosyayla çalışmak için önce onu açarız. Python'da bunun güvenli yolu with open(...) as f kalıbıdır.

with open("notlar.txt", "w") as f:
    f.write("Bugün Python öğreniyorum\n")

Bu üç satırı parça parça okuyalım:

with satırının altındaki kod içeride kalması için 4 boşluk girintili yazılır. Girinti, o satırların with bloğuna ait olduğunu gösterir.

Metnin sonundaki \n bir satır sonu karakteridir. Yeni bir satıra geçmek için kullanılır; kâğıttaki "enter" tuşu gibi düşünebilirsin.

Dosyayı geri okumak

Yazdığımız dosyayı okumak için kipi "r" (read, okuma) yaparız.

with open("notlar.txt", "r") as f:
    icerik = f.read()

print(icerik)

f.read() dosyanın tüm içeriğini tek bir metin olarak verir. Bunu icerik değişkenine koyduk ve ekrana yazdırdık. Terminalde şunu görürüz:

Bugün Python öğreniyorum

Dikkat: Okuma yaparken dosya diskte var olmalıdır. Olmayan bir dosyayı "r" kipiyle açmaya çalışırsan FileNotFoundError hatası alırsın. Bu tanıdık geldiyse iyi; önceki derste hata mesajlarını okumayı çalışmıştık.

Kipleri karıştırmayalım

Üç temel kip vardır:

Kipleri karıştırmayalım tablosu
KipAnlamıNe yapar
"r"readDosyayı okur (yazamaz)
"w"writeSıfırdan yazar, eski içeriği siler
"a"appendSonuna ekler, eskiyi korur

"w" kipinin eski içeriği sildiğini unutma. Var olan bir dosyaya yeni satır eklemek istiyorsan "a" kipini kullanmalısın.

Satır satır çalışmak

Birden çok satır yazmak

Çoğu zaman tek bir cümle değil, bir liste kaydetmek isteriz. Her maddeyi kendi satırına yazalım.

notlar = ["Süt al", "Kitabı geri ver", "Ödevi bitir"]

with open("notlar.txt", "w") as f:
    for madde in notlar:
        f.write(madde + "\n")

Burada for döngüsü listedeki her maddeyi tek tek gezer. madde + "\n" her maddenin sonuna bir satır sonu ekler; böylece maddeler alt alta yazılır. Dosyanın içi şöyle olur:

Süt al
Kitabı geri ver
Ödevi bitir

Satırları tek tek okumak

Bir dosyayı for döngüsüyle satır satır da okuyabiliriz. Bu, çok büyük dosyalarda bile hafızayı yormaz.

with open("notlar.txt", "r") as f:
    for satir in f:
        print("- " + satir.strip())

Buradaki satir.strip() küçük ama önemli bir ayrıntıdır. Her satırın sonundaki görünmez \n karakterini temizler; yoksa ekranda maddelerin arasında fazladan boş satırlar oluşur. Çıktı:

- Süt al
- Kitabı geri ver
- Ödevi bitir

Sonuna yeni madde eklemek

Programı yeniden çalıştırdığında "w" her şeyi silerdi. Eski notları koruyup yenisini eklemek için "a" kipini kullanırız.

with open("notlar.txt", "a") as f:
    f.write("Suları çiçeklere ver\n")

Bu kod dosyayı silmez; sadece en alta bir satır daha ekler. Şimdi dosyada dört madde vardır.

Mini uygulama

Küçük bir "not defteri" programı yazacağız: kullanıcıdan üç not alacak, bunları bir dosyaya yazacak ve sonra numaralandırarak geri okuyacak.

notlar = []
for i in range(3):
    yeni = input(f"{i + 1}. notu yaz: ")
    notlar.append(yeni)

with open("defter.txt", "w") as f:
    for madde in notlar:
        f.write(madde + "\n")

print("\nDefterin içeriği:")
with open("defter.txt", "r") as f:
    numara = 1
    for satir in f:
        print(str(numara) + ". " + satir.strip())
        numara = numara + 1

Ne olduğunu izleyelim:

  1. Boş bir notlar listesi açtık.
  2. for i in range(3) döngüsü kullanıcıdan üç kez not istedi ve listeye ekledi.
  3. Listeyi satır satır defter.txt dosyasına yazdık.
  4. Aynı dosyayı geri açıp her satırı numarayla ekrana bastık.

Programı çalıştır. Sonra kapat ve yeniden çalıştırmadan proje klasöründeki defter.txt dosyasını bir metin editörüyle aç. Yazdıkların orada duruyor mu? Duruyorsa, verini başarıyla kalıcı hâle getirdin demektir.

Uygulama laboratuvarı: Dosyalarla Çalışmaya Giriş

Dosyalarla Çalışmaya Giriş konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Dosyaya yazmak ve dosyadan okumak ile Dosyayı geri okumak arasındaki ilişkiyi kullanarak çalışan kısa bir Python 3 programı, örnek girdiler ve beklenen çıktılar hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.

Görev senaryosu

Şu senaryoyu ele al: bir dosyadaki satırları okuyup basit özet çıkaran araç. Dersin ana hedefi “with open ile metin dosyalarını güvenle okuyup yazmayı öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.

  1. Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
  2. En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
  3. Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
  4. Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
  5. Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.

Başarı ölçütleri

“Dosyalarla Çalışmaya Giriş” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın bir dosyadaki satırları okuyup basit özet çıkaran araç senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Dosyaya yazmak ve dosyadan okumak ve Dosyayı geri okumak ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

\n koymayı unutmak

Her f.write(...) çağrısına satır sonu eklemezsen bütün maddeler tek satırda birleşir: Süt alKitabı geri ver. Her satırın sonuna \n eklemeyi alışkanlık hâline getir.

"w" ile istemeden veri silmek

Var olan bir dosyayı "w" kipiyle açmak eski içeriği anında siler. Not eklemek istiyorsan "a", sadece okumak istiyorsan "r" kullan.

strip() unutmak

Satırları okurken strip() kullanmazsan sondaki \n yüzünden çıktıda fazladan boş satırlar görürsün. Ekrana yazdırırken satırları temizle.

Olmayan dosyayı okumaya çalışmak

Henüz yazmadığın bir dosyayı "r" ile açarsan FileNotFoundError alırsın. Önce yaz, sonra oku; ya da dosyanın klasörde gerçekten olduğundan emin ol.

Güvenlik notu

Dosyalarla çalışırken birkaç basit kurala uy:

Ders özeti

Kontrol soruları

  1. with open("veri.txt", "r") as f satırındaki "r" neyi ifade eder?
  2. "w" kipiyle var olan bir dosyayı açarsan eski içeriğine ne olur?
  3. f.write("Merhaba") yazdığında satır sonu eklemezsen ne olur?
  4. Bir dosyanın sonuna eski içeriği silmeden yeni satır eklemek için hangi kipi kullanırsın?
  5. Satırları okurken satir.strip() ne işe yarar?

Cevaplar

  1. "r" read (okuma) kipidir. Dosya sadece okunur, içine yazılamaz.
  2. Eski içerik tamamen silinir. "w" dosyayı sıfırdan yazar; bu yüzden dikkatli kullanılmalıdır.
  3. Sonraki yazılan metin öncekiyle aynı satırda birleşir. Alt alta yazmak için "\n" eklemek gerekir.
  4. "a" (append, ekleme) kipi. Eski satırlar korunur, yeni satır sona eklenir.
  5. Her satırın sonundaki görünmez \n (satır sonu) karakterini temizler; böylece çıktıda fazladan boş satır oluşmaz.

Kaynak ve doğrulama notu

“Dosyalarla Çalışmaya Giriş” dersi için doğrulama odağı Dosyaya yazmak ve dosyadan okumak ile Dosyayı geri okumak arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Kod örnekleri Python 3 sözdizimi esas alınarak hazırlanmıştır. Çalıştırma ortamına göre küçük farklar görülebileceği için örnekler önce güvenli bir çevrim içi editörde veya yerel geliştirme ortamında denenmelidir.

Sonraki ders

Rastgelelik ve Basit Oyun Mantığı: random modülüyle zar atmayı, rastgele seçim yapmayı ve ilk küçük tahmin oyununu kurmayı öğreneceğiz.

Quiz’i BaşlatPython Temelleri bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.