Merhaba, bu konuda sizlere python dosya işlemleri hakkında bilgil paylaşımı yapacağım. Bildiğiniz gibi C programlama dili başta olmak üzere bir çok
programlam dililnde dosya işlemler sık olarak kullanılmaktadır. Bizlerde şimdi bu python dosya işlemlerini öğrenelim. Pythonda bir dosya işlemleri
f = open(dosya_yolu-adi,islemKipi)
fonksiyonu ile yürütülmektedir. Bu fonkisyon ile dosyaları açıp okuma ve yazma işlemleri yapmaktayız.
Python open() Fonksiyonu Kullanımı
Python’da bir fonksiyonu okumak ve yazmak için open()
fonksiyonu kullanılmaktadır. Bu fonksiyon ile var olan dosya açılır, eğer dosya yoksa
oluşturulur.
1 | dosya=open("deneme.txt","w") |
Bu komut ile olmayan bir dosyayı aynı dizine oluşturduk. İkinci parametre olarak kullanılan “w” parametresi değeri ise dosyayı yazmak için açıtığımızı belirttik.
Python Dosyaya Veri Yazma
Oluşturmuş oldumuz dosyları bir çok amaç ile kullanmaktayız. Aynı zamanda bir çok uzantıda (.html .xml .jpg) gibi bir çok dosya oluşturabilir ve bu dosyaları dinamik olarak yayınlayabiliriz. Yine sunucu gerisinde veritabanı olarakta kullanabiliriz. “deneme.txt” dosyamıza bir şeyler yazalım.
1 2 3 | dosya=open("deneme.txt","w") durum=dosya.write("Merhaba Dünya\n") dosya.close() |
Bu komut ile yazılacak olan dosyamızı open() fonsiyonu ile açtık ve .write() fonkisyonumuz ile içersine verilerimizi yazdık. Yazma işleminin tamamlanması için .close() fonksiyonunu kullanmamız gerekmetedir. Daha sonra dosyay açıp baktığınızda dosya içerisine ilgli verinin yazılmış olduğunu göreceğiz.
Pekiştirmek adını elimizde bulunan bir listeyi dosyaya yazdıralım.
1 2 3 4 5 6 7 | dosya=open("deneme.txt","w") liste=["Mehmet Dağ","Mihriban Tahta","Ali Güven","Kerim Çiçek"] data="" for veri in liste: data+=veri+"\n" dosya.write(data) dosya.close() |
Yukarıdaki kodlardan da anlaşılacağı gibi deneme.txt dosyasına oluşturmuş olan bir liste döngüye sokularak tek bir değişkende toplanmış ve tek seferde yazılmıştır.
Python Dosya Okuma(.read() Fonksiyon Kullanımı)
Python’da, bir dosyayı okumak için .read() fonksiyonu kullanılmaktadır. Bu fonksiyonu kullanmakdan önce open() ile dosyanın açılması gerekmetedir. Bu sayede açılan dosyayı okuyabilirsiniz. Burada dikkat edilmesi gereken önemli hususlardan biri open(“dosya.txt”,”w”) fonksiyonunu yazdamk için ikinci parametre olarak “w” kullanılırken okumak için “r” parametresi verilmelidir. Şimdi yazmış olduğumuz dosyayı okuyaara ekrana çıktı verelim.
1 2 3 4 5 6 7 8 9 10 | dosya=open("deneme.txt","r") print(dosya.read()) dosya.close() ######################Ekran Çıktısı########################### #Mehmet Dağ #Mihriban Tahta #Ali Güven #Kerim Çiçek ############################################################## |
Yukardaki kod satırlarıyla deneme.txt dosyasını bir seferde okuyarak ekrana çıktı vermiş bulunuyoruz.
Python readLine() Fonksiyonu Kullanımı
Python readLine() fonksiyonu dosyadaki verileri satır satır okumanızı sağlamaktadır. Bu sayede dosyayı bir sederde bütün datayı olıp aramak yapmaktansa satır satır ilerleyerek arama yapılabilmektedir.
1 2 3 4 5 6 7 | dosya=open("deneme.txt","r") print(dosya.readline()) dosya.close() ######################Ekran Çıktısı########################### #Mehmet Dağ ############################################################## |
Python Readlines() Fonksiyonu Kullanımı
Python readlines() fonksiyonu ile dosyadaki bütün verileri satırlarına bölerek bize bir dizi olarak verir. Bu sayede bu diziyi döngüye sokarak istedğimiz datanın taramasını yapabiliriz.
1 2 3 4 5 6 7 | dosya=open("deneme.txt","r") print(dosya.readlines()) dosya.close() ######################Ekran Çıktısı########################### #['Mehmet Dağ\n', 'Mihriban Tahta\n', 'Ali Güven\n', 'Kerim Çiçek\n'] ############################################################## |
readlines() fonksiyonu ile gelen dizi sayesinde kullanım kolaylığı olmaktadır. Eğer istersek bu liste’yi döngüye sokarak ekarana basabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 | dosya=open("deneme.txt","r") data=dosya.readlines() for veri in data: print(veri.replace("\n","")) dosya.close() ######################Ekran Çıktısı########################### #Mehmet Dağ #Mihriban Tahta #Ali Güven #Kerim Çiçek ############################################################## |
Python try-except-finali-with Fonksiyonuları İle Dosya Okuma İşlemleri
Python’da ve diğer programlama dillerindende bileceğiniz gibi “try” bloğu içersinde bir hata oluştuğunuda except alanı çalışacak ve bu ihtmal doğrultusunda yapıması gerekenleri yaparak finally ile hata olsun veya olmasın yapılacak kodları burda yazıyoruz. Tabi bizler bir dosyayı açtığımızda oluşacak bir hata sonrası dosyayı kapatmak isteyeceğiz tyr-except-finally kullanılmadan hatasonrasınd dosyayı kapatamazsınız. Bu gibi durumlarda bizler finally kısmında dosyayı kapatıyoruz. Bu sayede olası işlemleri yaparken bir hata oluştuğunda except’den sonra finally çalışacak ve dosyayı sonrunsuz bir şekilde kapatabileceğiz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | try: dosya=open("deneme.txt","r") raise Exception("Olası hata"); except IOError as hata: print(hata) finally: print("Finally Alanı çalıştı. Dosya Kapatıldı.") dosya.close() ######################Ekran Çıktısı########################### #Finally Alanı çalıştı. Dosya Kapatıldı. #Traceback (most recent call last): # File "C:\Users\web-user\Desktop\python_document\calismalar\python-1.py", line 4, in <module> # raise Exception("Olası hata"); #Exception: Olası hata ############################################################## |
Yukarıdaki kod bloğunda raise Exception() fonksiyonu ile bir hata tanımlaması yaptık. Hatamız except alanında mesaj olarak ekrana basılırken, finally kısmı ilede açmış olduğumuz dosyayı kapatmış olduk. Bu kullanım önerilen bir kullanımdır. Tanımlı kullanım sayesinde kaynaklar gereksiz bir şekilde kullanılmasının önene geçilmiş oluyor.
Python seek() Fonksiyonu Kullanımı
Python seek() komutu dosya işlemlerinde kullanılmaktadır. Dosya içeriğini okuma işlemi yapıldıktan sonra imleç satır sonuna taşınmaktadır. Tekrar veri okunmak istendiğinde data gelemekmektedir. Bunu sebebi ilk okuma işleminden sonra imlecin sonda kalmış olmasıdır. Eğer imleç seek() komutu ile tekrar başa alınırsa okuma işlemi tekrardan sağlancaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | dosya=open("deneme.txt","r") print(dosya.read()) print("Tekrar okuma yapıldı") print(dosya.read()) print("İkicikez ekrana çıktı verildiğinde hiç data bulunamadı.") dosya.seek(0) print("İmleç başa alındı") print(dosya.read()) print("Okuma işlemi tamamlandı") dosya.close() ######################Ekran Çıktısı########################### #Mehmet Dağ #Mihriban Tahta #Ali Güven #Kerim Çiçek # #Tekrar okuma yapıldı # #İkicikez ekrana çıktı verildiğinde hiç data bulunamadı. #İmleç başa alındı #Mehmet Dağ #Mihriban Tahta #Ali Güven #Kerim Çiçek # #Okuma işlemi tamamlandı ############################################################## |
Python seek() fonksiyonunda parametre verilmelidir. Eğer 0 parametre olarak gönderilirse code.seek(0)
imleç 0 byt sonrasına yani en başa alınrı.
Python tell() Fonksiyonu Kullanımı (Ptyhon Dosya Boyutu Öğrenme)
Python tell() fonskiyonu dosya okuma işlemi yapılırken o anki satırın dosyanın kaçıncı byt’ında olduğunu öğrenmek için kullanıyoruz. Bu sayede dosya içersinde ekleme ve güncelleme yapacağımızaman dosyada kaç byt sonrasına ekliyeceğimizi öğrenmiş oluyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | dosya=open("deneme.txt","r") print(dosya.readline().replace("\n","")) print(dosya.tell()) print(dosya.readline().replace("\n","")) print(dosya.tell()) dosya.close() ######################Ekran Çıktısı########################### #Mehmet Dağ #12 #Mihriban Tahta #28Okuma işlemi tamamlandı ############################################################## |
Yukarıda deneme.txt dosyasını açıtık ve readline() fonsiyonu ile bir satır okuduktan sonra tekrar imlecin bulunduğu yere kadar olan dosya boyutunu öğrendik
Python Dosya Başına-Ortasına-Sonuna Veri Ekleme
Pythonda dosya işlemleri yaparken dosya başına, ortasına ve sonuna veri ekleme gereksinimi duyabilirsiniz. Bu gibi durumlarda neler yapmanız gerektiğini aşağıdaki örnek uygulamlarla bakalım.
Dosya sonun veri eklemek istersek open(“deneme.txt” “a”) open parametresinin ikinci alanına “a” yazmalısınız bu sayede yazacağınız veriler dosyanın sonuna eklenecek ve var olan ver silinmeyecektir.
1 2 3 | dosya=open("deneme.txt","a") dosya.write("Hilmi Kılıç") dosya.close() |
Dosyanın sonu “Hilmi Kılıç”ı eklemiş olduk.
Şimdiyse sayfanın başına ekleme yapalım. Python open(“deneme.txt”,”r+”) fonksiyonuna ikinci parametre değeri olarak “r+” veriyoruz. Bu sayede dosyayı hem okumak hemde yazmak için açtığımızı belirtiyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | dosya=open("deneme.txt","r+") data=dosya.read() dosya.seek(0) dosya.write("Talha Demir\n"+data) dosya.seek(0) print(dosya.read()) dosya.close() ######################Ekran Çıktısı########################### #Talha Demir #Mehmet Dağ #Mihriban Tahta #Ali Güven #Kerim Çiçek #Hilmi Kılıç ############################################################## |
Dosya sonuna ve vaşına veri işlemeyi öğrendik şimdi ise satır arasıa veri eklemeyi öğreneleim. Yine dosyamızı “r+” okuma ve yazama amacıyla açacağız. Verileri bir dizi olarak readlines() fonksiyonu ile lite haline getirdiğimiz verilere insert() fonksiyonu ile yeni verimizi listeye ekleyip writelinse() metodu ile tekrar vermiz dosyamıza yazıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | with open("deneme.txt","r+") as dosya: data=dosya.readlines() data.insert(3,"Ömer Lütfi Mete\n") dosya.seek(0) dosya.writelines(data) dosya.seek(0) print(dosya.read()) dosya.close() ######################Ekran Çıktısı########################### #Talha Demir #Mehmet Dağ #Mihriban Tahta #Ömer Lütfi Mete #Ali Güven #Kerim Çiçek #Hilmi Kılıç ############################################################## |
Python truncate() Fonksiyonu Kullanımı
Python truncate() fonksiyonu ile dosyanın belirli bir byte boyutuna düşürmeyi sağlıyor. Parametre olarak istenilen byte boyutunu girebilirsiniz. Eğer parametre kullanmazsanız dosya içersindeki bütün veriler sıfırlanacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | with open("deneme.txt","r+") as dosya: print(dosya.read()) dosya.seek(0) print("###########################") dosya.truncate(30) print(dosya.read()) dosya.close() ######################Ekran Çıktısı########################### #Mehmet Dağ #Mihriban Tahta #Ali Güven #Kerim Çiçek # ############################ #Mehmet Dağ #Mihriban Tahta #Al ############################################################## |
Python mode() Fonksiyonu Kullanımı
Python mdoe() fonskiyonu açılan dosyanın hangi kipte açıldığı bilgilsini almak için kullanılmaktadır.
1 2 3 4 5 6 7 8 | with open("deneme.txt","r+") as dosya: print(dosya.mode) dosya.close() ######################Ekran Çıktısı########################### #r+ ############################################################## |
Bu fonksiyon sayesinde dosyamızın “r+” kiptinde açıldığını öğrendik
Python name Fonsiyonu Kullanımı
Herhangi bir maksat ile açtığımız dosyanın adını öğrenmemize yarıyor.
1 2 3 4 5 6 7 8 | with open("deneme.txt","r+") as dosya: print(dosya.name) dosya.close() ######################Ekran Çıktısı########################### #deneme.txt ############################################################## |
Python encoding Fonksiyonu Kullanımı
Python’da açılan bir dosyanın karakter kodlamasını görememizi sağlamaktadır.
1 2 3 4 5 6 7 8 | with open("deneme.txt","r+") as dosya: print(dosya.encoding) dosya.close() ######################Ekran Çıktısı########################### #cp1254 ############################################################## |
Python Dosya Erişim Kipleri
Php dosya erişim kiplerindende hatırlıyor olcağız ki Python’da da dosya erişim kipleri mevcut. Bu kipler dosyaları hangi amaçla açtığınızın belirtildiği kiplerdir. Bu kipleri yetkisi dışında kullanılmaya çalışıldığında yani okuma kip “r” yazama olarak “w” kullanıldığında hata mesajı alacaksınızdır.
“r” | Dosyayı okumak için kullanılan kip. Bu kip kullanıldığında dosyanın hali hazırda var olması gerekmektedir. Aksi halde hata mesajı alacaksınızdır. Dosya açma kipi belirtilmedinğinde varsayılan kip olarak belirlenir. |
“w” | Dosyayı yazmak amaçlı kullanılan kiptir. Bu kipte dosya içersindeki veriler silinerek yerine yeni veri kaydedilir. |
“a” | Bu kip dosyayı yazma yetkisi ile açacak, var olan veriyi silmeden sonuna yeni veriyi ekleyecektir. |
“x” | Bu kip Python dosya işlemlerinde dosyayı yazamak için açacaktır. Dosya daha önce oluşturulmuşsa ekrana hata mesajı verecektir. |
“r+” | Dosyayı yazma ve okuma maksadıla açar. Dikkat edilmesi gereken durum dosyanın daha önce oluşturulmuş olması gerekmektedir. |
“w+” | Dosya yazma ve okuma işlemi yetkisi ile açılır eğer dosya mecutsa içersindeki verisi silinir eğer dosya mevcut değilse dosya tekrardan oluşturulur. |
“a+” | Dosyayı okuma ve yazma yetikisi ile açar. Dosya mecutsa içeriğine dokunmadan sonuna yeni veriyi ekler. Dosya mecut değilse yeniden oluşturulur. |
“x+” | Dosya okuma ve yazma yetkisiyle açılır. Dosya mevcutsa ekrana hata mesajı verilir. Dosya mevcut değilse dosya tekrardan oluşturulur. |