Merhaba arkadaşlar, bu yazımda python da dosyadan veri okuma , dosyaya veri yazma ,alma gibi işlemleri nasıl yaptığımızı anlatacağım. Küçük bir not hesaplama uygulaması yaparak  öğrendiklerimizi pekiştireceğiz.

Python Programlama İle Dosya Okuma-Yazma İşlemleri

Merhaba arkadaşlar, bu yazımda python da dosyadan veri okuma , dosyaya veri yazma ,alma gibi işlemleri nasıl yaptığımızı anlatacağım. Küçük bir not hesaplama uygulaması yaparak öğrendiklerimizi pekiştireceğiz.

Öncelikle arkadaşlar bir dosyayı open() fonksiyonu ile açabiliyoruz. Open fonksiyonu 3 adet parametre almaktadır. İlk parametre bizim açacağımız dosyanın adı ,ikinci parametre ise dosyaya erişim kipidir. Üçüncü parametre ise karakter kodlamasında hata çıkmaması için kullanılmaktadır. Aşağıdaki kod bloğunda open fonksiyonunun yazım şekli gösterilmiştir.

  1. dosya=open("Dosyaya verdiğiniz isim","Dosya Kipi",encoding="utf-8")

Yukarıdaki kod bloğunda dosya kipi yazan yerde dosyaya veri yazma okuma işlemleri izinlerini verdiğimiz kiplerimiz vardır. İlk olarak “w”kipi ile başlayım. W kipini kullanırken çok dikkatli olmak gerekir. W kipi verdiğiniz zaman dosya sizin verdiğiniz dosya adı ile dosyayı açar. Önceden öyle bir dosya var ise o dosyayı siler ve yeniden bir dosya açar. Yani eski dosya içerisindeki verileriniz silinir. Eski verilerinizin silinmesini istemiyorsanız “w” kipini kullanmayın.
Diğer bir kip ise “a” dır. A kipi append anlamına gelmektedir. Eğer açmak istediğiniz dosya yok ise yeni bir dosya açar. Açmak istediğiniz dosya çalışma projeniz içerisinde var ise dosya içerisindeki veriler silinmeden üzerine yazar.
Dosyaları okumak için kullanılan kip ise read ‘in kısaltması “r” dir. Eğer r kipi ile açılan dosya proje içerisinde yeni bir dosya oluşturmaz hata verir. Dosyadan okuma ve aynı anda dosyaya veri yazmak için kullanılan bir kip ise “r+” kipidir. En çok kullanılan kiplerden birisidir.
Açmış olduğumuz dosyaları kapatırken dosya açarken dosyayı atamış olduğunuz değişken adını verilerek açılan dosya kapatılır. Yukarıda dosya adında bir değişkene atamıştık dosya.close() diyerek kapatıyoruz.
Bir dosya içerisine veri yazmak için write() fonksiyonunu kullanıyoruz. Aşağıdaki kodda write kullanılarak dosya içerisine veriler yazdırılmıştır.

  1. dosya=open("ders_programi.txt","r+",encoding="utf-8"
  2. )
  3. dosya.write("Python Programlama-1\n"
  4. "Modül 3\n"
  5. "5 Saat")
  6. dosya.close()
  7.  

Dosya içerisinde olan verileri okumak için read() fonksiyonunu kullanıyoruz.

  1. dosya=open("ders_programi.txt","r+")
  2. print(dosya.read())
  3. dosya.close()
  4.  

Eğer bir dosyanın sadece bir satırını okumak istersek readline() fonksiyonunu kullanırız. Her readline yazdığınızda bir alt satırı okur.

  1. dosya=open("ders_programi.txt","r+")
  2. print(dosya.readline()) #İlk satırı okudu
  3. print(dosya.readline()) #İkinci satırı okudu
  4. dosya.close()
  5.  

Readlines() fonksiyonu ise bize her satırı bir liste halinde vermektedir. Aşağıdaki kodda readlines() fonksiyonu kullanılarak dosya içerisindeki veriler okunmuştur.

  1. dosya=open("ders_programi.txt","r")
  2. satirlar=dosya.readlines()
  3. for satir in satirlar:
  4. print(satir)
  5. dosya.close()
  6.  

Dosyanın başına veri eklemek isterseniz yeni bir fonksiyonu daha kullanmanız gerekiyor. Bu fonksiyon seek() fonksiyonudur. Seek fonksiyonu dosyanın hangi byte nın üzerine gitmek isterseniz içerisine o değeri veriyoruz. Dosyanın en başına gitmek için içerisine 0 vermemiz gerekiyor. İçerisine hangi sayıyı yazarsanız o byte üzerine gider. Aşağıdaki kod bloğunda dosyanın başına veri nasıl eklenir bunu göstermeye çalıştım.

  1. dosya=open("ders_programi.txt","r+")
  2. dosya.read()
  3. dosya.seek(0)
  4. dosya.write("Python Programlama: 2 Ders 3,5 Saat")
  5. dosya.flush()
  6. dosya.close
  7.  

Araya eleman eklemek için insert() fonksiyonunu kullanıyoruz. İnsert komutu iki parametre almaktadır. İlk parametre hangi satıra ekleneceği ve ikinci parametre ise hangi parametrenin ekleneceği şeklindedir. Aşağıdaki insert fonksiyonu ile dosyanın 5.satırına Araya Ekle yazısı yazdırılmıştır. :

  1. #Araya ELeman Ekleme İşlemi
  2. with open("dosyaadi.txt","r+",encoding="utf8") as file:
  3. f=file.readlines()
  4. f.insert(5," Araya Ekle\n")
  5. file.seek(0)
  6. file.writelines(f)
  7.  

Yukarıda dosyayı with open() as file yazarak açtım ve kapatmadım. Python üzerinde dosya açmak için kullanılan diğer bir yöntemdir. Dosyaları açmak için with open() kullanmak daha performanslıdır. Dosya okuma işlemi bittikten sonra otomatik olarak dosyayı kapatır. Dosya okuma işlemleri yaparken dosyayı açtıktan sonra kapatma işlemini yapmazsanız programınızda veri kaybı ve hata ile karşılaşma ihtimaliniz yüksektir. Hata ile karşılaşmamak için with open() ile dosya açmaya özen gösterin.
Bir program yazalım bir txt dosyasında öğrenci isimleri ve sınavdan aldıkları 3 tane not olsun. Bu notların katsayılarına bakarak bize öğrencinin dersten geçip kaldığını hesaplasın. İlk olarak sınav notları adında bir txt de dosyası oluşturdum.Dosya içerisine örnek olması açısından 5 adet veri ekledim.

  1. Ertuğrul Deniz,40,73,57
  2. Yaşar Koca ,80,100,90
  3. Ozan Kahraman,100,70,100
  4. Erdem Güneş,52,100,68
  5. Burak Ünlü ,80,70,100

Daha sonra bu dosya içerisindeki verileri okuma işlemini gerçekleştirip. Sınav katsayılarına göre dersten geçtiğini veya kaldığını hesaplayan bir fonksiyon yazdım.Aşağıdaki kodda öğrencinin sınavlardan aldığı notlara göre dersi hangi harf notu ile geçtiğini gösteren küçük bir kod yazmaya çalıştım.

  1. def not_hesapla(satir):
  2. satir=satir[:-1]
  3. liste=satir.split(",") #Virgüle göre parçalama işlemleri gerçekleştiriyoruz.
  4. print(liste)
  5. isim=liste[0]
  6. not1= int(liste[1])
  7. not2= int(liste[2])
  8. not3= int(liste[3])
  9. sonnot=not1*(3/10)+not2*(3/10)+not3*(4/10)
  10.  
  11. if(sonnot>90):
  12. harf="AA"
  13. elif(sonnot>=80 and sonnot<=90):
  14. harf="BA"
  15. elif(sonnot>=65):
  16. harf="CC"
  17. else:
  18. harf="FF"
  19.  
  20. return isim +": "+ harf +"\n"
  21.  
  22. with open("sinavnotlari.txt","r+",encoding="utf-8") as file:
  23. eklenecekler_listesi=[]
  24.  
  25. for i in file:
  26. eklenecekler_listesi.append(not_hesapla(i))
  27.  
  28. with open("sonuclar.txt","w",encoding="utf-8") as file2:
  29. for i in eklenecekler_listesi:
  30. file2.write(i)
  31.  
  32. ##www.ertugruldeniz.com sitesi makale örneği olması için yazılmıştır.

Bu kod çalıştırıldığı zaman sonuçlar.txt adında bir dosya oluşturulacaktır. İçerisinde öğrencilerin dersten hangi harf ile geçtiğini gösterecektir.

  1. Ertuğrul Deniz: FF
  2. Yaşar Koca : BA
  3. Ozan Kahraman: AA
  4. Erdem Güneş: CC
  5. Burak Ünlü : BA

Koşul içerisine daha farklı durumlar yazarak işlemler yapılabilir. Sadece göstermek amaçlı 3 durum yazdım. Bu kod üzerinde eklemeler yaparak geliştirilebilir.
Bu yazımda sizlere python programlama da dosya işlemleri hakkında bilgiler vermeye çalıştım. Diğer yazılarımda görüşmek üzere.

Bu Gönderiyi Paylaş

Yorumlar (10)

  • Omer

    FB grubunda yazdigim gibi try except ile IOError kontrolunu yaziya ekleyebilirsen yazidan faydalanacak arkadaslar icin daha yararli olacaktir.

    2017-11-06 13:12:18
  • Ertuğrul Deniz

    try except ile yapmak daha mantıklı önerin için teşekkür ediyorum Ömer. Zaman bulunca güncellemeye çalışacağım.

    2017-11-12 21:22:50
  • Burak

    notlar gerçekçi değil ...

    2017-12-10 11:07:05
  • cetin

    Uzun bir verimiz var patonda işleyemiyoruz. Python’da (Excel deki gibi kaç satırlık veri işlenebilir).

    2018-06-08 19:41:15
  • Ertuğrul Deniz

    Merhaba Çetin, Uzun verileri tek dosyaya işlemek yerine belirli bir satıra ulaştığında yeni bir dosya açtırarak sorunun önüne geçebilirsiniz. Kaç satır işlenebileceği hakkında pek bir bilgim yok. Bilgisayarınızın müsade ettiği kadar satırı işleyebileceğini düşünüyorum. Fakat işlenen verileri açarken zorluk yaşayabilirsiniz. Çok satır veri olduğunu düşünerek bunları yazdım. Teşekkürler

    2018-06-09 08:10:49
  • emir

    merhaba benim dosyamda veri1:veri2 olarak duruyor veriler ve her satırda 2 tane veri var. ben veri1'i veri2'den nasıl ayırabilirim?

    2018-07-26 09:34:06
  • Ertuğrul Deniz

    Merhaba Emir. Dosyayı satır satır okumak lazım. Her satırı okuduktuktan sonra python fonksiyonlarından split'i kullanarak veriyi parçalayıp veri1 ve veri2 yi iki farklı değişkene atayabilirsin.

    2018-08-07 09:53:06
  • Ali

    Python'dan bir dosyayı silmesini istiyorum bunu nasıl yapabilirim ?

    2018-11-27 10:07:59
  • Ertuğrul Deniz

    Selam Ali, Python da dosya silmek için import os "os" kütüphanesini dahil etmen gerekir. Daha sonra os.remove("siliinecekdosyaadi.uzanti") "remove" fonksiyonuna dosya adını yazarak silebilirsin.. Kolay gelsin.

    2018-12-04 20:06:17
  • hasan

    hocam ben şu kodlarla dosyaları buluyorum ama bir türlü txtye yazdıramadım satır satır.boyutlarını da ekleyemedim.yardımcı olabilr misiniz ? kodlar: import os for roots, dirs, files in os.walk(".", topdown=False):

    2018-12-15 17:19:07

İçerik Hakkında Yorum Yapın

www.000webhost.com