📜Dosya İşlemleri
Python dosya işlemleri ile okuma, yazma, güncelleme ve silme işlemlerini göreceğiz.
Python ile dosya işlemleri önemli bir konudur. Fakat öncesinde dosya nedir sorusunu cevaplayalım.
Unix işletim sistemlerinde her nesne bir dosyadır. Yani elinizdeki metin belgeleri, medya dosyaları gibi herşey uzantısı olsun veya olmasın bir dosya demektir. Sizde bu dosyalar üzerinde özgürce çalışabilirsiniz.
Artık dosyalar üzerinde yapabileceğimiz tüm işlemleri sırasıyla görebiliriz.
1. Dosya İşlem Kipleri
Dosyalar üzerinde okuma, yazma, güncelleme ve silme işlemi yapmadan önce dosyalarımızı hangi modlarda (kiplerde) kullanabileceğimizi görelim.
2. Dosya Okuma & Açma İşlemleri
Bu örneklerde basit bir txt
uzantılı metin belgesi ile çalışacağız fakat siz herhangi bir dosya ile de aşağıdaki örnekleri gerçekleştirebilirsiniz. Hatta png
uzantılı resimlerle bile çalışabilirsiniz. Çünkü unutmayınız ki herşey bir dosyadır.
2.1 Dosyayı Seçme
Aşağıdaki yöntemle dosyamızı seçiyoruz ve işlem kipini (r-read) belirtiyoruz. Ayrıca karakter kodlamasını da fonksiyona dahil edebiliriz.
Artık okuyacağımız dosyayı seçmiş bulunuyoruz. Bundan sonra işlemlerimize daha rahat devam edebiliriz.
2.2 Tüm Dosyayı Ekrana Yazdırma / read()
read()
Dosyayı seçtikten sonra direkt ekrana basmak isteyebiliriz. Bunun için şu şekilde bir kullanımı tercih edebiliriz:
Eğer biz read()
fonksiyonuna bir sayı değeri verirsek sadece o sayı değeri kadar alanı okuyacaktır. Hemen görelim.
Artık metin belgemizin tamamını ekranda görebiliriz ama unutmayınız ki bu fonksiyon çalıştığında imleci dosyanın sonuna götürür. Yani tekrar aynı fonksiyonu çağırırsanız bu sefer imleç en sonra olduğu için ekrana basılan bir içerik göremezsiniz.
2.3 Her Seferinde Sıradaki Satırı Ekrana Yazdırma / readline()
readline()
Şimdi sırada satır satır okuma işlemi yer alıyor. readline()
fonksiyonunu her çağırmamızda sadece bir satır okursunuz. Yani ilk çağırdığınızda dosyanın ilk satırını, ikinci çağırdığınızda dosyanın ikinci satırını okursunuz. Bunu döngüye sokarak tüm dosyayı satır satır okuyabilirsiniz.
Buradaki tek sorun döngüye soktuğumuzda döngünün kaçıncı satırda biteceğini bilemememiz. Bunu öğrenmenin farklı farklı yöntemleri var ama bize zaman kaybettirmekten başka birşey sağlamaz. Bu yüzden aşağıdaki methodu kullanmanız daha mantıklı olacaktır.
2.4 Dosyayı Satır Satır Döngüyle Ekrana Yazdırma / with
with
Bir dosyayı satır satır yazdırabilmemiz için readline()
dışında kullanabileceğimiz 2 yöntemimiz var. İki yöntemde aynı kapıya çıkıyor. Bu nedenle aşağıdaki kullanım şekillerinden hoşunuza gideni direkt kullanabilirsiniz.
Yöntem-1
Yöntem-2
2.5 Dosyanın Her Satırını Diziye Eklemek / readlines()
readlines()
readline()
fonksiyonu her çağırdığımızda dosyayı satır satır okumamızı sağlıyordu. readlines()
ise çağırdığımızda dosyanın tüm satırlarını bir diziye atar. Böylece her satır dizinin bir elemanı olur. Kullanım şeklini ve sonucunu aşağıda görebilirsiniz.
Dosya işlemlerinde okuduğunuz satırların sonunda /n
kısmını görebilirsiniz. Bir alt satıra inmeyi işaret eden bu kodu rstrip("/n")
fonksiyonuyla temizleyebilirsiniz.
3- Dosyaya Yazma İşlemleri
Dosyalarımızı artık rahatça okuyabiliyoruz. Peki bu dosyalara istediğimiz verileri nasıl ekleyebiliriz? Bu sorunun cevabı da birazdan göreceğiniz gibi oldukça basit. Sadece dikkat etmeniz gereken tek nokta var ve buda dosyayı hangi kipte yazma moduna alacağınızdan başka birşey değil.
Şimdiki konumuz dosyaya veri yazmak olduğu için biz sadece w
ve a
modlarını kullanacağız.
3.1 w Moduyla Dosyaya Veri Yazmak
w
kipiyle açtığımız dosyalar yoksa oluşturulur. Varsa dosyanın içeriği önce silinerek temizlenir ve ardından yazmak istediğimiz veriler eklenir. Kısaca eski veriler yok olur. Bu nedenle w
modunu dikkatli kullanınız.
Yukarıdaki işlemlerden sonra dosyayı açarsanız karşınızda bu yazdıklarımızı göreceksiniz. Dosyayı kapatana kadar yazmaya da devam edebilirsiniz (dosya kapatma işlemini en sonra göreceğiz)
3.2 a Moduyla Dosyaya Veri Yazmak
a
modu da yine aynı şekilde dosyaya veri yazmamızı sağlar ama tek farkı mevcut dosyanın içeriğini silmez. Bunun yerine dosyanın sonundan yeni verileri eklemeye başlar.
Eğer bilgiler.txt nin içinde daha önceden yazılı başka metinler varsa silinmediğini göreceksiniz.
Dosyalara yazma işlemi yaparken satır eklemek isterseniz \n
kullanmalısınız. Aksi halde tüm yazdıklarınız tek satırda yan yana dizilir.
4. Dosya Silmek
Dosyalarınızı silmek istediğinizde os
modülünü programınıza dahil etmeniz gerekiyor. Ardından remove()
fonksiyonu sile dosyanızı silebilirsiniz.
Eğer silmek istediğiniz nesne bir klasörse bu sefer rmdir()
fonksiyonunu kullanmalısınız.
5. Dosyaları Kapatmak
Dosyalar üzerindeki işiniz bittiğinde kapatmanız gerekiyor. Bunun için close()
adından da anlaşılacağı üzere yardımımıza koşuyor.
Çoğu kez dosyalarımızı kapatmayı unuttuğumuz için Pythonun otomatik dosya kapatma özelliğini kullanmak daha iyidir. Bunun için dosyalarınızı açarken şu şekilde açarsanız manuel olarak dosya kapatmaya ihtiyacınız kalmayacaktır.
6. Özel Dosya Fonksiyonları
6.1 Dosyanın Var Olup Olmadığını Kontrol Etmek
Üzerinde çalışmak istediğiniz bir dosyanın öncelikle var olup olmadığını kontrol etmek hataların önüne geçebilir. Bu kontrolü os
modülüyle şu şekilde yapabilirsiniz.
6.2 İmlecin Nerede Olduğunu Öğrenme
Biraz sonra göreceğimiz imleci dosyada istediğimiz yere koyma işlemlerine gelmeden önce imlecin nerede olduğunu öğrenmekle başlayalım konuya. Aşağıdaki fonksiyon sayesinde imlecin dosyanın kaçıncı byte nda olduğunu öğrenebiliriz.
Örneğin dosyada bir read()
işlemi yaptıysanız imleç dosyanın sonuna gider ve yukarıdaki fonksiyon size dosyanın byte miktarını gösterir. Hiçbir işlem yapmadıysanız da dosyanın başında olduğunuzu söyler, yani 0 gösterir.
6.3 Dosyanın Belirli Bir Byte'ına İmleci Koymak
Eğer imlecimizi dosyada istediğimiz bir byte'a koymak istiyorsak bunu şu şekilde yapabiliriz.
6.4 Dosyanın Sonuna Veri Eklemek
Bu işlem için dosyayı a
kipinde açıp write ile verilerinizi eklemeniz yeterli olacaktır
6.5 Dosyanın Başına Veri Eklemek
Bu işlemi yapabilmenin en kolay yolu dosyanın tamamını okuyup başına istediğimiz veriyi ekleyerek yeni bir string olarak kaydetmek, ardından imleci başa getirerek yeni veriyi yazmak olacaktır. Hemen görelim:
İşte bu kadar basit. Sadece farklı olarak dosyayı r+
modunda açtık çünkü dosyayı hem okuyor, hem yazıyoruz.
Last updated