ProgramlamaPython

Python ile Dosya Okuma

Python ile Dosya Okuma

Python ile dosya okuma ve verileri almak için  “r”  kipi ile açmamız gerekmektedir. Eğer  “r”  kipiyle açmış olduğumuz dosya bulunmuyorsa Python,  “FileNotFound”  hatası dönecektir.

Python ile Dosya Okuma
Python ile Dosya Okuma

Şimdi bulunduğumuz dizinde bulunan  yazi.txt  dosyasını açalım. Eğer bu isimde bir dosyanız bulunmuyorsa oluşturup içine bazı değerler girebilirsiniz.

file=open("yazi.txt","r",encoding="utf-8")

 

Açmış olduğumuz dosyayı kapatmak için.

file.close()

 

Varolmayan bir dosya açmayı denediğimizde almış olduğumuz hatayı görelim.

file=open("yazi2.txt","r",encoding="utf-8")

 

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-6-8eb4cd7bd372> in <module>
----> 1 file=open("yazi2.txt","r",encoding="utf-8")
FileNotFoundError: [Errno 2] No such file or directory: 'yazi2.txt'

 

try – except:

Dosya işlemlerini daha güvenli yapmak için  try – except  kullanabiliriz.

try:
    file=open("yazi2.txt","r",encoding="utf-8")
except FileNotFoundError:
    print("Dosya Bulunamadı")

Çıktı: Dosya Bulunamadı

 

Dosya Okuma Yöntemleri

for Döngüsü ile Dosya Okuma

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

file=open("yazi.txt","r",encoding="utf-8") # Dosyamızı okuma "r" kipi ile açıyoruz.

for i in file: # Tıpkı listeler gibi dosyamızın her bir satırı üzerinde geziniyoruz.
    print(i) # Her bir satırı ekrana basıyoruz.
file.close() # İşimiz bittiğinde ise dosyamızı kapatıyoruz.


Çıktı: 
Serdar Kurt

Ek bir şeyler ekledik.

 

Burada her bir satırımız boşluklu yazıldı. Bunun nedeni ise hem her satır başında ya da sonunda  \n  (escape character) karakterinin olması hem de print fonksiyonunun bir alt satıra geçmek için boşluk bırakmasından kaynaklanmaktadır. Bunu önlemek için varsayılan değer olarak  \n  karakteri alan  end  parametresine kendimiz değer verebiliriz.

file=open("yazi.txt","r",encoding="utf-8") # Dosyamızı okuma "r" kipi ile açıyoruz.

for i in file: # Tıpkı listeler gibi dosyamızın her bir satırı üzerinde geziniyoruz.
    print(i,end="") # Her bir satırı ekrana basıyoruz. Bu sefer bitiş karakteri olarak hiç bir şey kullanma dedik.
file.close()

Çıktı:
Serdar Kurt
Ek bir şeyler ekledik.

 

read() Fonksiyonu ile Dosya Okuma

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

file=open("yazi.txt","r",encoding="utf-8") # Dosyamızı okuma "r" kipi ile açıyoruz.

icerik=file.read() # Dosyamızı okuyup içindeki veriyi icerik değişkenine atıyoruz.

print("Dosya içeriği:\n",icerik,sep="")

file.close()


Çıktı:
Serdar Kurt
Ek bir şeyler ekledik

 

readline() Fonksiyonu ile Dosya Okuma

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

file=open("yazi.txt","r",encoding="utf-8")

print(file.readline())
print(file.readline())
print(file.readline()) # dosyada bir şey kalmadığı için ekrana boş satır basacak
print(file.readline()) # dosyada bir şey kalmadığı için ekrana boş satır basacak
print("-------------") # anlamak için araya -------- atalım
print(file.readline()) # dosyada bir şey kalmadığı için ekrana boş satır basacak
file.close()


Çıktı:
Serdar Kurt

Ek bir şeyler ekledik


-------------

 

readlines() Fonksiyonu ile Dosya Okuma

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

file=open("yazi.txt","r",encoding="utf-8");
file.readlines()
file.close()

Çıktı:
['Serdar Kurt\n', 'Ek bir şeyler ekledik']

 

Dosyaları Otomatik Kapatmak

Dosyalarda işimiz bittiği zaman, dosyamızı kapatmamız gerektiğini biliyoruz. Ancak programcılık doğası gereği çoğu zaman dosyalarımızı kapatmayı unutabiliriz. Bunun için Python ile dosyalar üzerinde çalıştıktan sonra işimiz bitince otomatik olarak dosyayı kapatma özelliği bulunuyor. Bundan sonra Python’da dosya işlemlerimizi şu blok içine yapacağız.

"""
Eğer dosya işlemlerimizi bu blok içerisinde yaparsak işlemimiz bittiği an
dosyamız otomatik olarak kapanacaktır.
"""
with open("yazi.txt","r", encoding="utf-8") as file:
    for i in file:
        print(i)


Çıktı:
Serdar Kurt
Ek bir şeyler ekledik

 

Dosyaları İleri Geri Sarmak

Biliyorsunuz ki dosyaları okurken sadece dosyanın en başından başlayabiliyorduk ve dosya imlecimiz okuma bittiğinde dosyanın en sonuna gidiyordu. Ancak biz çoğu zaman dosya imlecini dosyanın herhangi bir yerine götürmek isteyebiliriz. Bunun için Pythonda’ki  seek()  fonksiyonunu kullanacağız.

 

Ancak ondan önce dosya imlecinin hangi byte’da olduğunu söyleyen  tell()  fonksiyonuna bakalım.

with open("yazi.txt","r",encoding="utf-8") as file:
    print(file.tell())


Çıktı:
0

 

Şu an hiç bir şey yapmadığımız için tell() fonksiyonu dosyanın en başında olan 0. byte’da olduğumuzu bildirdi. Peki bir dosyanın imlecini 20. byte’a getirmek için ne yapacağız. Bunun için de seek() fonksiyonu kullanacağız.

 

with open("yazi.txt","r",encoding="utf-8") as file:
    file.seek(20)
    print(file.tell())

 

# yazi.txt dosyasına ait içerikten belirli kısmı alalım. Yani belirli aralığı seçip alacağız.
with open("yazi.txt","r",encoding="utf-8") as file:
    file.seek(5) # Dosyanın içinden 5. byte'a git (yani 5. karakter)
    icerik = file.read(10) # Gidilen 5. byte'dan itibaren 10 byte'ı oku.
    print(file.tell()) # İmlecin kaçıncı byte'da olduğunu ekrana yazdılarım.
    print(icerik)

 

with open("yazi.txt","r",encoding="utf-8") as file:
    file.seek(5) # Dosyanın içinden 5. byte'a git (yani 5. karakter)
    icerik = file.read(10) # Gidilen 5. byte'tan itibaren 10 byte'ı oku.
    print(icerik)
    file.seek(0)
    icerik2 = file.read(6)
    print(icerik2)

 

 

Dip not:

 encoding=”utf-8″  parametresi, eğer okuduğumuz dosyada Türkçe karakter bulunuyorsa karakter ve ya karakterleri düzgün görüntülememizi sağlar.

 

Bir sonraki konumuz ise dosyalarda değişiklik yapmak.

 

Python

Serdar Kurt

Merhaba, 1986 Ankara doğumluyum. Sakarya Üniversitesi Bilgisayar Programcılığı mezunuyum. Şu an özel bir şirkette Security Engineer pozisyonunda görev yapıyorum. Bilişim Teknolojileri alanında kendimi geliştirmeye devam ediyorum.

İlgili Makaleler

Abone ol
Bildir
guest
0 Yorum
Satır İçi Geri Bildirimler
Tüm yorumları görüntüle
Başa dön tuşu

Reklam Engelleyici Algılandı

Bana destek olmak için lütfen reklam engelleyicinizi devre dışı bırakınız ya da bu siteyi izin verilenler listesine ekleyiniz.