Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
mustafamuratcoskun
GitHub Repository: mustafamuratcoskun/Sifirdan-Ileri-Seviyeye-Python-Programlama
Path: blob/master/Dosya İşlemleri/Dosyalarda Değişiklik Yapmak.ipynb
765 views
Kernel: Python 3

Dosyalarda Değişiklik Yapmak

Bu derste dosyalarda değişiklik yapmayı öğrenmeye çalışacağız. Bunun için 2 farklı yolu öğrenmeye çalışacağız.

seek() ve write()

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ızda bilgileri görelim.

with open("bilgiler.txt","r+",encoding = "utf-8") as file: print(file.read())
Mustafa Murat Coşkun Oğuz Artıran Serhat Say Mehmet Gençol
with open("bilgiler.txt","r+",encoding = "utf-8") as file: file.seek(10) # 10. byte file.write("Deneme")
with open("bilgiler.txt","r+",encoding = "utf-8") as file: print(file.read())
Mustafa MuDenemeşkun Oğuz Artıran Serhat Say Mehmet Gençol

Bu şekilde bir şeyler yapmak isterseniz bu yöntemi kullanabilirsiniz

Dosyanın Sonunda Değişiklik Yapmak

Bu işlemlerin en kolayıyla başlayalım. Dosyaların sonunda değişiklik yapmak için, dosyamızı "a" kipiyle açalım ve sadece dosyanın sonuna write() ile ekleme yapalım.

with open("bilgiler.txt","a",encoding = "utf-8") as file: file.write("Mert Erarslan\n") # "append" metoduyla açılan bir dosyanın imleci direk dosyanın sonunda olduğu için sadece write
with open("bilgiler.txt","r",encoding = "utf-8") as file: print(file.read())
Mustafa Murat Coşkun Oğuz Artıran Serhat Say Mehmet Gençol Mert Erarslan

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

"bilgiler.txt" dosyamızın başına bir tane satır eklemek için ne yapabiliriz ? Bunun için dosyamızı bütünüyle string halinde alıp daha sonra satırımızı string'in başına eklememiz gerekiyor. Daha sonra dosyanın en başına seek() fonksiyonuyla giderek ,direk write() fonksiyonunu kullanabiliriz. Hemen yapalım.

with open("bilgiler.txt","r+",encoding = "utf-8") as file: icerik = file.read() print(icerik)
Mustafa Murat Coşkun Oğuz Artıran Serhat Say Mehmet Gençol Mert Erarslan
with open("bilgiler.txt","r+",encoding = "utf-8") as file: icerik = file.read() icerik = "Semih Aktaş\n" + icerik file.seek(0) file.write(icerik)
with open("bilgiler.txt","r+",encoding = "utf-8") as file: icerik = file.read() print(icerik)
Semih Aktaş Mustafa Murat Coşkun Oğuz Artıran Serhat Say Mehmet Gençol Mert Erarslan

İşte bu kadar ! Son olarak da dosyaların ortasında değişiklik yapmayı öğrenmeye çalışalım.

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

Dosyaların ortasına 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 listenin herhangi bir yerine bir eleman ekleyerek bu listeyi for döngüsü ile dosyaya yazacağız.

with open("bilgiler.txt","r+",encoding = "utf-8") as file: print(file.readlines())
['Semih Aktaş\n', 'Mustafa Murat Coşkun\n', 'Oğuz Artıran\n', 'Serhat Say\n', 'Mehmet Gençol\n', 'Mert Erarslan\n']

Örneğin , "Oğuz Artıran" satırının altına bir tane daha satır eklemek istiyoruz. Bunun için bu listenin 3.indeksine insert() metoduyla bir satır ekleyeceğiz. Daha sonra dosyanın en başına giderek bu listeyi tek tek for döngüsü ile yazacağız.

with open("bilgiler.txt","r+",encoding = "utf-8") as file: liste = file.readlines() liste.insert(3,"Mehmet Keper\n") file.seek(0) for satır in liste: file.write(satır)
with open("bilgiler.txt","r+",encoding = "utf-8") as file: icerik = file.read() print(icerik)
Semih Aktaş Mustafa Murat Coşkun Oğuz Artıran Mehmet Keper Serhat Say Mehmet Gençol Mert Erarslan

Pythonda bir dosyaya listenin içindeki değerleri yazmak için for döngüsü dışında pratik bir fonksiyon bulunuyor. writelines fonksiyonu içine verdiğimiz listeyi dosyaya yazacaktır.

with open("bilgiler.txt","r+",encoding = "utf-8") as file: liste = file.readlines() liste.insert(3,"Ahmet Baltacı\n") file.seek(0) file.writelines(liste)
with open("bilgiler.txt","r+",encoding = "utf-8") as file: icerik = file.read() print(icerik)
Semih Aktaş Mustafa Murat Coşkun Oğuz Artıran Ahmet Baltacı Mehmet Keper Serhat Say Mehmet Gençol Mert Erarslan

İşte bu kadar ! Gördüğünüz gibi dosyalarda işlem yapabilmek için biraz fazla düşünmemiz gerekiyor. İlk başta zorlanacağınızdan eminim . Zorlandığınız zaman sorularınızı her zaman sorabilirsiniz.