Python ile Dosyalarda Değişiklik Yapmak

Bu yazıda Python ile dosyalarda nasıl değişiklik yapılır bundan bahsettim. 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ızdaki bilgileri görelim.


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

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

 


with open("yazi.txt","r+",encoding="utf-8") as file:
    file.seek(10)
    file.write("Deneme")

"""
Çıktı:
Serdar KurDenemet
Ek bir şeyler ekledik
"""

Bu şekilde bir değişiklik yapmak istersek yukarıdaki yöntemi kullanabiliriz.

 

Dosyanın Sonunda Değişiklik Yapmak

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


with open("yazi.txt","a",encoding="utf-8") as file:
    file.write("Dosyanın En Sonuna Eklenecek\n") # Append "a" metodu ile açılan bir dosyanın imleci dosyanın en sonunda olur.

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

"""
Çıktı:
Serdar Kurt
Ek bir şeyler ekledik
Dosyanın En Sonuna Eklenecek
"""

 

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

yazi.txt dosyamızın başına bir tane satır eklemek için ne yapmamız gerekmektedir? Bunun için dosyamızı bütünü ile string halinde alıp daha sonra satırımızı string’in başına eklememiz gerekiyor. Son olarak dosyanın en başına seek() fonksiyonu ile gidip direkt write() fonksiyonunu kullanabiliriz.


with open("yazi.txt","r+",encoding="utf-8") as file:
    icerik=file.read() # dosyamızın bütününü icerik değişkenine string olarak alıyoruz.
    print(icerik)


"""
Çıktı:
Serdar Kurt
Ek bir şeyler ekledik
Dosyanın En Sonuna Eklenecek
"""

with open("yazi.txt","r+",encoding="utf-8") as file:
    icerik=file.read() # dosyamızın bütününü icerik değişkenine string olarak alıyoruz.
    icerik = "İlk satır\n" + icerik # İlk satır, içeriğin en başına ekliyoruz.
    file.seek(0)
    file.write(icerik)

with open("yazi.txt","r+",encoding="utf-8") as file:
    icerik=file.read() # dosyamızın bütününü icerik değişkenine string olarak alıyoruz.
    print(icerik)

""" 
Çıktı: 

İlk satır 
Serdar Kurt 
Ek bir şeyler ekledik 
Dosyanın En Sonuna Eklenecek 
"""

 

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

Dosyanın ortasında 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 dosyanın herhangi bir yerine satır ekledikten sonra for döngüsü ile yeni veriyi dosyaya yazdıracağız.

 


with open("Bilgiler.txt","r+",encoding="utf-8") as file:
    print(file.readlines())


"""
Çıktı:

['İlk satır\n', 'Serdar Kurt\n', 'Ek bir şeyler ekledik\n', 'Dosyanın En Sonuna Eklenecek']
"""

 

Örneğin Serdar Kurt satırının altına bir tane daha satır eklemek istiyoruz. Bunun için bu listenin 2. indeksine insert() metodu ile satır ekleyeceğiz.

Daha sonra dosyanın en başına giderek bu listeyi for döngüsü ile baştan yazdıracağız.

 


with open("yazi.txt","r+",encoding="utf-8") as file:
    liste=file.readlines()
    liste.insert(2,"Dosyanın ortasına ekledik\n")
    file.seek(0)
    for i in liste:
        file.write(i)

# Değişikliği görmek için dosyayı tekrar okuyoruz.
with open("yazi.txt","r+",encoding="utf-8") as file:
print(file.read())

"""
Çıktı:

İlk satır
Serdar Kurt
Dosyanın ortasına ekledik
Ek bir şeyler ekledik
Dosyanın En Sonuna Eklenecek

"""

 

for ile listede dönmektense daha kolay yolu olan writelines() fonksiyonunu görelim.

 


with open("yazi.txt","r+",encoding="utf-8") as file:
    liste=file.readlines()
    liste.insert(2,"Dosyanın ortasına ekledik\n")
    file.seek(0)
    file.writelines(liste)


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


"""
Çıktı:

İlk satır
Serdar Kurt
Dosyanın ortasına ekledik
Ek bir şeyler ekledik
Dosyanın En Sonuna Eklenecek

"""

 

Kaynak

 


Abone ol
Bildir
guest
0 Yorum
Satır İçi Geri Bildirimler
Tüm yorumları görüntüle