Şu ana kadar yazdığımız Python programlarında verilerimizi listelerde, sözlüklerde veya değişkenlerde sakladık. Ancak bu veriler bilgisayarın geçici belleğinde (RAM) tutulduğu için program kapandığında tamamen silinir. Gerçek dünya uygulamalarında (örneğin bir kullanıcı kayıt sistemi, bir oyunun skor tablosu veya bir analiz yazılımı) verilerin kalıcı olarak saklanması gerekir. İşte tam bu noktada Python Dosya İşlemleri (File Operations) devreye girer.
PYTHON DOSYA İŞLEMLERİ EĞİTİMİ VİDEOMUZ İÇİN TIKLAYIN
Hazırladığımız bu kapsamlı rehberde, Python kullanarak bilgisayarınızda nasıl dosya ve klasör oluşturacağınızı, metin dosyalarını nasıl okuyup yazacağınızı ve bu dosyaları nasıl yöneteceğinizi adım adım örneklerle öğreneceksiniz.
1. Çalışma Dizini (Working Directory) Nedir ve Nasıl Ayarlanır?
Dosya okuma ve yazma işlemlerine geçmeden önce Python’un çalışma dizini (working directory) ile ilgili ayarlarının yapılması gerekmektedir. Python dilinin varsayılan çalışma dizini, genellikle programın kurulduğu veya kod dosyanızın bulunduğu klasördür. Python’un bilgisayarın dosya sistemlerine erişmesi için öncelikle os adındaki yerleşik Python modülünün programımıza çağrılması (import edilmesi) gerekir.
Mevcut Dizini Öğrenmek ve Değiştirmek: Komut satırından veya kodunuzun içinden bu modüle ait getcwd() fonksiyonu çağrılarak programın mevcut çalışma dizini kolayca öğrenilebilir. Eğer işlemlerinizi başka bir klasörde yapmak isterseniz, çalışma dizinini değiştirmek için chdir() fonksiyonu kullanılır.
import os
# Mevcut çalışma dizinini öğrenme
dizin = os.getcwd()
print("Şu anki dizin:", dizin) # Örn: C:\Users\Kullanici\PythonProjeler
# Çalışma dizinini değiştirme
os.chdir('C:\\test')
yeni_dizin = os.getcwd()
print("Yeni dizin:", yeni_dizin) # Çıktı: C:\test
Not: Windows sistemlerinde dosya yollarını yazarken kaçış dizisi (escape character) çakışmalarını önlemek için çift ters bölü (\\) kullanmaya dikkat edin.
2. Çapraz Platform Uyumlu Dosya Yolu (Path) Tanımlama
Yol (Path), dosya veya klasörün bilgisayarın dosya sistemindeki tam konumunu belirtir. Doğal olarak bir dosyaya erişmek, onu silmek veya içeriğini değiştirmek için o dosyanın nerede olduğunu bilmeniz gerekir. İşletim sistemleri dosya yollarını farklı şekillerde ayırır. Örneğin Windows işletim sistemi ters bölü (\) kullanırken, Unix/Linux ve macOS işletim sistemleri düz bölü (/) kullanır.
Yazdığınız kodların tüm işletim sistemlerinde sorunsuz çalışabilmesi (platformdan bağımsız olması) için os.path.join() fonksiyonu kullanılır. Bu fonksiyon, gerekli olan doğru ayraç işaretini araya otomatik olarak ekleyerek klasör ve dosya isimlerini birleştirir.
import os
# İşletim sistemine uygun dosya yolu oluşturma
yol = os.path.join('test', 'python')
print(yol)
# Windows'ta çıktı: test\python
# macOS/Linux'ta çıktı: test/python
3. Klasör Oluşturma ve Kontrol İşlemleri
Python programınızın yeni bir dosya yaratmadan önce, o dosyayı koyacağı klasörün (dizinin) var olup olmadığını kontrol etmesi hata almanızı önler. Bunun için yolun var olup olmadığını belirten exists() ve klasör olup olmadığını kontrol eden isdir() fonksiyonları kullanılır.
Belirlediğiniz konumda yeni bir klasör oluşturmak için ise os.mkdir() veya os.makedirs() fonksiyonları kullanılır.
import os
yol = os.path.join("C:\\", "test2")
# Klasörün var olup olmadığını kontrol ediyoruz
if os.path.exists(yol):
print("Bu yol zaten mevcut.")
else:
print("Yol bulunamadı, yeni klasör oluşturuluyor...")
os.mkdir(yol) # Klasörü oluşturur
print("Klasör başarıyla oluşturuldu.")
4. Dosya Açma ve Temel Erişim Modları
Python dili dosya işlemleri için oldukça kullanışlı gömülü fonksiyonlar içerir ve bu temel işlemler için ekstra bir modülü içe aktarmanıza gerek yoktur. Mevcut bir dosyayı açmak veya yeni bir dosya oluşturmak için open() fonksiyonu kullanılır.
open() fonksiyonu, açılacak dosyanın ismi ve mod (dosya açma biçimi) olarak iki temel parametre alır. En sık kullanılan dosya modları şunlardır:
- “r” (Read – Okuma): Okumak için bir dosya açar. Dosya hedefte yoksa hata verir. Herhangi bir mod belirtilmezse Python varsayılan olarak dosyayı “r” modunda açar.
- “w” (Write – Yazma): Yazma modunda bir dosya açar. Dosya hedefte yoksa sıfırdan oluşturulur. Kritik nokta: Eğer dosya zaten varsa, içindeki eski verilerin tamamı silinir ve üzerine yazılır.
- “a” (Append – Ekleme): Var olan bir dosyaya veri eklemek (düzenleme yapmak) için açar. Dosya hedefte yoksa oluşturulur. Eski veriler silinmez, yeni veriler dosyanın en sonuna eklenir.
- “x” (Create – Oluştur): Belirtilen dosyayı oluşturur. Eğer aynı isimde bir dosya zaten mevcutsa hata döndürür.
5. Dosyadan Veri Okuma İşlemleri
Bir metin dosyasını (örneğin milli.txt) okumak için Python bize üç farklı fonksiyon sunar:
read(): Açılmış dosyanın tüm içeriğini tek bir metin (string) bilgisi olarak okur.readline(): Mevcut satırı okur ve her çağrıldığında sıradaki bir sonraki satırı getirir.readlines(): Dosyanın içeriğini satırlara ayırır ve bu satırlardan oluşmuş bir liste (list) döndürür.
# Dosyayı okuma modunda açıyoruz
dosya = open("C:\\test\\milli.txt", "r")
# Tüm içeriği okuyup ekrana yazdırıyoruz
icerik = dosya.read()
print(icerik)
# Verimli bellek yönetimi için dosyayı kapatıyoruz
dosya.close()
Çok Önemli Not (close kullanımı): Açılan her dosya bilgisayarın belleğine atılır ve hafızada yer kaplar. Bu nedenle verimli bir bellek yönetimi ve veri kayıplarını önlemek için dosyalarla işiniz bittiğinde mutlaka close() fonksiyonu kullanılarak kapatılmalı ve bellekten kaldırılmalıdır.
6. Dosyaya Veri Yazma ve Ekleme
Bir dosyaya yeni veriler yazmak için open() fonksiyonu “w” parametresi ile kullanılır ve write() fonksiyonu ile içeriğe veri gönderilir. Metin yazarken bir alt satıra geçmek için \n (newline – yeni satır) kaçış dizisi kullanılır.
Eğer daha önceden içi dolu olan bir dosyanın içeriğini silmeden sadece yeni satırlar eklemek istiyorsanız, dosyanın “a” (append) parametresi kullanılarak ekleme modunda açılması gerekmektedir. Bu modda açılan dosyaya eklediğiniz her yeni satır, son verinin hemen altına yazılacaktır.
# Yeni bir dosya oluşturup içine yazma ("w" modu)
dosya = open("C:\\test\\hitabe.txt", "w")
dosya.write("Ey Türk Gençliği!\n")
dosya.write("Birinci vazifen...\n")
dosya.close() # Kaydetmek ve kapatmak için şart!
# Var olan dosyaya yeni veri ekleme ("a" modu)
dosya_ekle = open("C:\\test\\hitabe.txt", "a")
dosya_ekle.write("Bu satır eski veriler silinmeden en alta eklenecek.\n")
dosya_ekle.close()
Eğer “a” yerine tekrar “w” kullansaydık, “Ey Türk Gençliği!” yazısı tamamen silinir ve sadece son yazdığımız metin kalırdı.
7. Dosya Silme ve Yedekleme (Kopyalama)
Gereksiz dosyaları temizlemek programınızın düzeni için önemlidir. Mevcut bir dosyayı bilgisayardan kalıcı olarak silmek için os modülünün remove() fonksiyonu kullanılır. Silme işlemi yaparken, dosyanın gerçekten orada olup olmadığını kontrol etmek, programın çökmesini engeller.
Çalışılan dosyaların herhangi bir olumsuz duruma karşı yedeklenmesi de veri ve emek kaybının önüne geçmek adına çok kritiktir. Python’da dosya kopyalama ve üst düzey dosya işlemlerinde kullanabileceğiniz shutil adlı yerleşik bir modül bulunmaktadır. shutil.copy() fonksiyonu ile dosyalarınızı başka bir konuma yedekleyebilirsiniz.
Örnek: Dosya Yedekleme ve Silme
import os
import shutil
kaynak_dosya = "C:\\test\\hitabe.txt"
yedek_dosya = "C:\\test\\hitabe_yedek.txt"
# 1. Adım: Dosyayı Yedekleme
if os.path.exists(kaynak_dosya):
print("Dosya mevcut, yedekleniyor...")
shutil.copy(kaynak_dosya, yedek_dosya)
print("Dosya başarı ile yedeklendi.") # hitabe_yedek.txt oluşturuldu
# 2. Adım: Orijinal Dosyayı Silme
if os.path.exists(kaynak_dosya):
os.remove(kaynak_dosya)
print("Orijinal dosya sistemden silindi.")
else:
print("Silinecek dosya bulunamadı.")
Sonuç Python’da dosya işlemleri yapmak, uygulamanıza dış dünya ile kalıcı bir iletişim kurma yeteneği kazandırır. os ve shutil kütüphanelerinin yardımıyla klasörleri yönetmek, open(), read(), write() ve close() gibi gömülü fonksiyonlarla verileri işlemek oldukça kolaydır. Verilerinizi her zaman “w” ve “a” modlarının farkını bilerek yazmaya ve işiniz bittiğinde dosyalarınızı close() ile kapatmaya özen gösterin. Kendi IDE’nizde basit log (kayıt) dosyaları veya yapılacaklar listesi oluşturarak bu güçlü konuyu pratik etmeyi unutmayın!






Bir Yorum
These are truly enormous ideas in regarding blogging. You have touched some pleasant things here.
Any way keep up wrinting.