Ana sayfa Genel Python – Dosyalar

Python – Dosyalar

7102
345
PAYLAŞ

Python – Dosyalar

Dosya Açma ve Yazma İşlemleri

Bu konuyla beraber dosya üzerinde işlemler yapmaya başlayacağız.

Dosya Açmak

Bir dosyayı açmak için open() fonksiyonunu kullanıyoruz. Yapısı şu şekildedir;

Dosya adını istediğimiz isimde verebiliriz. Dosya erişme kipi ise bizim dosya üzerindeki işlemlerimizi belirler. Bunları dersler boyunca yavaş yavaş göreceğiz.

“w” dosya kipi

Dosyalarımızı açmak ve dosyalarımıza yazmak için “write” anlamına gelen “w” kipini kullanıyoruz. “w” kipi eğer oluşturmak istediğimiz dizinde öyle bir dosya yoksa dosyayı oluşturuyor , eğer öyle bir dosya varsa dosyayı silip tekrar oluşturuyor. Yani, eğer açmak istediğimiz dosyadan zaten varsa ve dosyanın içi doluysa “w” kipi dosyadaki bilgileri silip tekrar oluşturacaktır. (Biraz Tehlikeli)

Dosyaları Kapatmak

Bir dosya üzerinde işlem yaptığımızda o dosyayı kapatmak sistem kaynaklarının gereksiz kullanılmaması açısından önemlidir. Çünkü programımız bitse bile dosyanın kapanacağı garanti değildir. Bu yüzden işlerimiz bittiği zaman dosyayı kapatmalıyız.

Eğer bir dosyayı bulunduğumuz dizinde değil de başka bir dizinde açmak istersek, dizinin yolunu özellikle belirtmeliyiz.

(Windows işletim sistemi kullanıyorum. Başka işletim sistemleri için yapamazsanız bana ulaşabilirsiniz 🙂 )

“w” Kipiyle Dosyalara Yazmak

İlk olarak dosyayı “w” kipiyle açıyoruz.

Gördüğümüz gibi write fonksiyonuyla dosyamıza herhangi bir şey yazabiliyoruz. Ancak “w” kipi her seferinde dosyayı tekrar oluşturduğu için dosyayı tekrar açtığımızda bilgiler kaybolacaktır.

“a” Kipiyle Dosyalara Yazmak

“append” (ekleme) kelimesinin kısaltması olan “a” kipiyle bir dosyayı açtığımızda , dosya eğer yoksa oluşturulur. Eğer öyle bir dosya mevcut ise, dosya tekrar oluşturulmaz ve dosya imleci dosyanın sonuna giderek dosyaya ekleme yapmamızı sağlar.

Dosyayı tekrar açalım.

Ancak eğer buradaki isimleri dosyalara alt alta yazmak istersek “\n” karakterini kullanmalıyız.

 

Dosya Okuma İşlemleri

Dosyaları okumak ve verileri almak için “r” kipiyle açmamız gerekiyor. “r” kipiyle açtığımız dosya eğer bulunmuyorsa “FileNotFoundError” hatası dönecektir. Şimdi bulunduğumuz dizinde bulunan “bilgiler.txt” dosyasını açalım.

Dosya işlemlerini daha güvenli yazmak try,except bloklarını kullanabilirsiniz.

Peki bir dosyanın içinden bilgileri nasıl okuyacağız ? Bunun için Pythonda değişik yöntemler bulunuyor. İsterseniz bu yöntemleri tek tek görmeye çalışalım.

For döngüsü ile okuma

Şöyle bir kullanım dosyamızdaki herbir satırı tek tek okuyacaktır.

Burada her bir satırımız boşluklu yazıldı. Bunun nedeni, hem her satır sonunda “\n” karakterinin olması hem de print fonksiyonun bir alt satıra geçmek için boşluk bırakmasıdır. Bunu önlemek için varsayılan değer olarak “\n” karakteri alan end parametresine kendimiz değer verebiliriz.

read() fonksiyonu

read() fonksiyonu eğer içine hiçbir değer vermezsek bütün dosyamızı okuyacaktır.

read() fonksiyonuna değer vererek belli bir kısmı okumayı bir sonraki dersimizde görmeye çalışsak daha doğru olur.

read() fonksiyonuyla bir dosyayı okuduğumuzda dosya imlecimiz dosyanın en sonuna gider ve read() fonksiyonu 2. okuma da artık boş string döner.

readline() fonksiyonu

readline() fonksiyonu her çağrıldığında dosyanın sadece bir satırını okur. Her seferinde dosya imlecimiz (file) bir satır atlayarak devam eder.

readlines() fonksiyonu

readlines() fonksiyonu dosyanın bütün satırları bir liste şeklinde döner.

Dosyalarda Kullanılan Fonksiyonlar

Dosyaları Otomatik Kapatma

Dosyalarda işlemlerimiz bittiği zaman dosyamızı kapatmamız gerektiğini biliyoruz. Ancak programlamacılık doğası gereği çoğu zaman dosyaları kapatmayı unutabiliriz. Bunun için Pythonda dosyalarda işimiz bitince otomatik kapatma özelliği bulunuyor. Bundan sonra Pythonda dosya işlemlerimizi şu blok içinde yapacağız.

Örneğimize bakalım.

Eğer dosya işlemlerini bu blok içinde yaparsak işlemimiz bittiği zaman dosyamız otomatik olarak kapanacaktır.

Dosyaları İleri Geri Sarmak

Biliyorsunuz önceki dersimizde dosyaları okurken sadece dosyanın en başından başlayabiliyorduk ve dosya imlecimiz okuma işleminin sonunda , dosyanın en sonuna gidiyordu. Ancak biz çoğu zaman dosya imlecini (file) dosyanın herhangi bir yerine götürmek isteyebiliriz. Bunun için Pythondaki seek() fonksiyonunu kullanacağız. Ancak ondan önce dosya imlecinin hangi byteda olduğunu söyleyen tell() fonksiyonuna bakalım.


Şu anda hiçbir işlem yapmadığımız için tell() fonksiyonu dosyanın en başında (0. byteda) olduğumuzu söyledi. Peki bir dosya imlecini dosyanın 20.byte’ına götürmek için ne yapacağız ? Bunun için de seek() fonksiyonunu kullanacağız.

Peki biz bir dosyanın belirli bir byte’ına(karakter) gidip sadece belli sayıda karakteri nasıl okuyacağız ? Eğer biz read() fonksiyonuna bir sayı değeri verirsek sadece o sayı değeri kadar alanı okuyacaktır. Hemen görelim.

Dosyalarda Değişiklik Yapmak

seek() ve write()

Eğer biz bir dosyanın belli bir yerine seek() fonksiyonu ile gidip, write() fonksiyonunu kullanırsak, yazdığımız değerler öncesinde bulunan değerlerin üzerine yazılacaktır. Bunun için hem okuma hem de yazma işlemimizi yapmamızı sağlayan “r+” kipini kullanacağız. İlk önce dosyamızda bilgileri görelim.

Bu şekilde bir şeyler yapmak isterseniz bu yöntemi kullanabilirsiniz

Dosyanın Sonunda Değişiklik Yapmak

Bu işlemlerin en kolayıyla başlayalım. Dosyaların sonunda değişiklik yapmak için, dosyamızı “a” kipiyle açalım ve sadece dosyanın sonuna write() ile ekleme yapalım.


Dosyanın Başında Değişiklik Yapmak

“bilgiler.txt” dosyamızın başına bir tane satır eklemek için ne yapabiliriz ? Bunun için dosyamızı bütünüyle string halinde alıp daha sonra satırımızı string’in başına eklememiz gerekiyor. Daha sonra dosyanın en başına seek() fonksiyonuyla giderek ,direk write() fonksiyonunu kullanabiliriz. Hemen yapalım.




İşte bu kadar ! Son olarak da dosyaların ortasında değişiklik yapmayı öğrenmeye çalışalım.

Dosyanın Ortasında Değişiklik Yapmak

Dosyaların ortasına herhangi bir satır eklemek için ilk olarak her bir satırı liste halinde almamızı sağlayan readlines() fonksiyonunu kullanacağız. Daha sonra bu listenin herhangi bir yerine bir eleman ekleyerek bu listeyi for döngüsü ile dosyaya yazacağız.

Örneğin , “Oğuz Artıran” satırının altına bir tane daha satır eklemek istiyoruz. Bunun için bu listenin 3.indeksine insert() metoduyla bir satır ekleyeceğiz. Daha sonra dosyanın en başına giderek bu listeyi tek tek for döngüsü ile yazacağız.

Pythonda bir dosyaya listenin içindeki değerleri yazmak için for döngüsü dışında pratik bir fonksiyon bulunuyor. writelines fonksiyonu içine verdiğimiz listeyi dosyaya yazacaktır.

İşte bu kadar ! Gördüğünüz gibi dosyalarda işlem yapabilmek için biraz fazla düşünmemiz gerekiyor. İlk başta zorlanacağınızdan eminim . Zorlandığınız zaman sorularınızı her zaman sorabilirsiniz.

BİR CEVAP BIRAK

Please enter your comment!
Please enter your name here