Dosya Değiştirme İşlemleri Son (Genel Bakış ) - Python Dersleri (Tutorials)
Merhabalar
Python programlama derslerinin bu bölümünde dosyalarda değişiklik yapma ile alakalı toparlayıcı bir ders olacaktır.
Dosyalarda değişiklik yaparken bize rehber görevi gören iki adet metodumuz vardı bunlar : tell() ve seek() metotları.
Bu metotlardan tell() metodu bize file olarak uygulamalarımızda belirttiğimiz dosya imlecin yerini verirken seek() metodu ise dosya içerisinde gezinmemizi sağlamaktadır. tell() metodunun ayrıntılı anlatımı için buraya ve seek() metodunun ayrıntılı anlatımı için de buraya bakabilirsiniz.
Dosyalar üzerinde çeşitli değiştirme yöntemleri kullandık.
1.Yöntem
Bunlardan ilkinde dosyamızı "r+" modunda açıp write() metodunu kullandık. Ancak bu kullanım çok kontrollü bir kullanım değildi. Dosyaya yazmak istediğimiz yerde başka bir veri varsa direk o verinin üzerine yazıyordu :
Örnekte 23.byte da veri varsa eğer write() direk bu verinin üzerine "Test" yazacaktır. Bu da veri kaybına sebep olacak ve önemli bilgilerin olduğu ve yedeğin olmadığı bir dosyayı düşünürsek ciddi problemler ortaya çıkacaktır.
Bu örneğin ayrıntılı incelemesine buradan ulaşabilirsiniz.
2.Yöntem (Dosyanın sonuna veri ekleme)
Dosyalarda değişiklik yapmak için kullandığımız bir diğer yöntem ise "a" kipini kullanmaktır. Herhangi bir dosyayı append yani ekleme modunda açtığımızda file dosya imleci dosyanın sonuna konumlandırılır ve biz write() metodu ile herhangi bir şey yazdığımızda dosyanın sonuna yazmış oluruz.
Aşağıdaki örneğe bakalım:
Bu dosyayı append modu ile açıp aşağıdaki gibi veri ekleriz :
Sonuç ise şöyle olacaktır :
Bununla alakalı ayrıntılı derse buradan erişebilirsiniz.
3.Yöntem (Dosyanın başına veri ekleme)
Bu yöntemde tüm dosyamızı string bir değişkene atayıp ekleyeceğimiz veriyi bu stringin başına ekliyorduk.
Dosyamızın içeriğinin aşağıdaki gibi olduğunu düşünün :
Şimdi bu dosyanın başına "Assembly" kelimesini ekleyelim :
Örnekte görüldüğü ve daha önce ifade ettiğimiz gibi tüm dosyanın içeriği ilk olarak file.read() metodu ile okunup string bir değişkene atanmıştır. Sonrasında toplama operatörü kullanılarak eklenecek veri bu string in başına eklenmiştir.
Burada dikkat edilmesi gereken nokta, oluşan yeni string write() metodu ile dosyaya yazılmadan önce seek() metodu kullanılarak imleç dosyanın başına getirilmiştir.
Bu dersin ayrıntılı anlatıma buradan ulaşabilirsiniz.
4.Yöntem
Bu yöntem benim gözümde en işe yarar yöntemdir. Tüm dosyayı readlines() metodu ile okuyup bir listeye dönüştürüyoruz. Sonrasında bir liste metodu olan insert() metodu ile eklemek istediğimiz veriyi dosyanın istediğimiz yerine yazdırıyoruz.
İlk olarak readlines() metodunun etkisini görelim :
Görüldüğü gibi dosya içeriğimiz listeye dönüştürülmüş. Şimdi de verimizi ekleyelim :
insert() metodu ile verimiz listeye eklendikten sonra for() döngüsü kullanılarak liste elemanları dosyaya baştan yazdırıldı. for döngüsünden önce seek() metodu ile imleci sayfa başına getirdiğimizi de yeri gelmişken hatırlatalım.
Bu uygulamanın ayrıntılı analizine de buradan erişebilirsiniz.
Böylelikle uzun bir süreçte anlatılan dersleri bu dersle toparlamaya çalıştım.
Şimdilik bu kadar.
Umarım faydalı bir çalışma olmuştur.
Teşekkürler.
Kaynak belirtilmeyen görseller bana aittir. The pictures without source in the post is belong to me
You got a 67.70% upvote from @brupvoter courtesy of @elektroyazilim!
You got a 95.75% upvote from @minnowvotes courtesy of @elektroyazilim!
This post has received a 22.22% upvote from @lovejuice thanks to @elektroyazilim. They love you, so does Aggroed. Please be sure to vote for Witnesses at https://steemit.com/~witnesses.
You got a 25.00% upvote from @redlambo courtesy of @elektroyazilim! Make sure to use tag #redlambo to be considered for the curation post!
You got a 33.33% upvote from @whalecreator courtesy of @elektroyazilim! Delegate your Steem Power to earn 100% payouts.
You got a 33.33% upvote from @bid4joy courtesy of @elektroyazilim!
You got a 25.00% upvote from @whalepromobot courtesy of @elektroyazilim!
The force is with you! You got a 19.00% upvote from @steemyoda courtesy of @elektroyazilim!
You got a 96.59% upvote from @luckyvotes courtesy of @elektroyazilim!