Python’da Dosya işlemleri;

Ocak 23, 2020 0 Yazar: alikperislam
### dosya işlemleri :
# not ------> write() metodu dosyalamada print() metoduyla aynı işi yapar...
# dosya açma ve yazma işlemleri :
# "w" dosya kipi'nin kullanımı = dosyaya yazı yazmamızı ve
# aynı dosyadan bir tane daha varssa güncelleme yapmamızı sağlıyor. (tehlikelidir her şey silinebilir.)
file=open("bilgiler.txt","w") #dosya açmak.
file.close() #dosyayı kapatma buşekilde.
file=open("c:/Users/90538/Desktop/bilgiler.txt","w") #masaüstüne taşımış olduk c: üzerinden.
file = open("bilgiler.txt","w",encoding="utf-8")
file.write("Alikper İslam")
file.close()
# not = utf-8 en genel karakter dizisidir onu kullanmak için encoding="utf-8" yazmalıyız "w", nin yanına.
file = open("bilgiler.txt","w",encoding="utf-8")
file.close() #şimdi tekrardan dosyayı silip tekrardan oluşturacak yani silinicek içindeki bilgiler.

# "a" kipi'nin kullanımı = append anlamına gelir yani, dosyaya sürekli ekleme yapacaksak kullanılır,verileri silmez.
file = open("bilgiler.txt","a",encoding="utf-8") # "a" kipi ile açtık bu kez, sürekli ekleyeceğiz.
file.write("mustafa murat coşkun\n")
file.close()
file = open("bilgiler.txt","a",encoding="utf-8")
file.write("merhaba alikper\n") # alt satırdan devam etmesi için \n kullanmalıyız.
file.close()

### dosya okuma işlemleri :
# dosyaları okumak için "r" kipini kullanmamız gerekiyor.
# "r" kipi ile açtığımız dosya bulunmuyorsa filenotfound hatası verir.
# aynı dosya içerisinde bulunmazsa hata verir ya belirt desktop diye ya da aynı dosya da tut.
#file=open("bilgiler2.txt","r") #hata verecektir çünkü öyle bir dosya açmamıştık.

#for döngüsü ile dosya okuma işlemi :
file=open("alikper.txt","r",encoding="utf-8")
for i in file:
print(i, end="") # end="" yaparak python ın otomatik olarak alt satır da boşluk bırakma işleminin önüne geçtim.
file.close()

#read() fonksiyonu ile dosya okuma işlemi :
file=open("alikper.txt","r",encoding="utf-8")
icerik=file.read()
print("\niçerik :")
print(icerik)
file.close()

# readline() fonksiyonu ile dosya okuma işlemi :
# readline() fonksiyonu satırları tek tek okumamızı sağlıyor.
file=open("alikper.txt","r",encoding="utf-8")
print(file.readline())
print(file.readline())
print(file.readline())
print(file.readline())
print(file.readline())
print(file.readline())
file.close()

# readlines() fonksiyonu ile dosya okuma işlemi :
# bu fonksiyon ile her bir satırı tek tek okuyup bir diziye atıyor.
file=open("alikper.txt","r",encoding="utf-8")
liste=file.readlines()
print(liste) #diziye aktararak verecek ekranda.


### dosya okuma işlemlerinde kullanılan diğer fonksiyonlar-metodlar :
# otomatik olarak dosya kapatma :
with open("deneme.txt", "r", encoding="utf-8") as file: # bunu yazınca blok bittiği an dosya otomatik kapanacak.
for i in file:
print(i)


## dosyaları ileri-geri sarma işlemi :
# tell ve seek fonksiyonlarını kullanıcaz.
# tell fonksiyonu dosya imlecinin hangi baytta olduğunu söylüyor.
# seek fonksiyonu ise bizim dosya imlecimizi herhangi bir yere göürmemizi sağlayacak.
## not ----> dosya imleci == file diye adlandırdığımız şey.
with open("deneme.txt", "r", encoding="utf-8") as file:
print(file.tell()) # seek fonk. kullanmazsak eğer 0. bayta olur.
file.seek(30) # önce seek fonk. kullanırsak sonra o seek fonksiyonu ile gittiğimiz byte'ı tell ile gösterebiliriz.
print(file.tell())


## seek ve tell fonksiyonlarını kullanarak yazının belli bir bölümünü okuma işlemi yaptırma :
with open("deneme.txt", "r", encoding="utf-8") as file:
file.seek(5) # 5. byte'a gittik ve artık yazdırırken burdan itibaren yazacak.
icerik = file.read(10) # içeriye yazı yazmasaydık 5'ten sona kadardı ama içeriye yazınca sayı kadar gösterecek.
print(file.tell()) # kaçıncı byte'dayız.
print(icerik) # yazdırdık
file.seek(0) ### tekrardan 0 dan başlatmayı sağladık.
icerik2 = file.read(6) ## kaç byte yazdırcak onu söyledik.
print(file.tell()) # yeni yazılacak olanda kaçıncı byte dayız.
print(icerik2) # 2. yazıyı yazdırdık.


### dosyanın içinde değişiklik yapma işlemleri :
# seek() ve write() fonk. kullanarak değişiklik yapıyoruz.
# daha önce öğrendiğimiz kiplerin dışında r+ kipini kullanıcaz bu kip sayesinde aynı anda yazma ve okuma yapıyoruz.
#bu yöntem ile birlikte kaçıncı byte'dan itibaren yazdıracaksak onu siler yerine yazar yani üzerine yazar.
with open("deneme.txt","r+",encoding="utf-8") as file: # r+ yaparak hem okuma hem yazmayı yapıcaz.
print(file.read()) # önce yazdırdık ilk halini.
with open("deneme.txt","r+",encoding="utf-8") as file:
file.seek(3) # 3. byte'dan itibaren yazdırcaz.
file.write("deneme") # deneme yazdrıcak.
with open("deneme.txt","r+",encoding="utf-8") as file:
print(file.read()) # son halini yazdırdık.


## dosyanın sonunda ki satırda değişiklik yapma veya sonuna satır ekleme işlemleri :
print("ilk hali :")
with open("deneme1.txt", "w", encoding="utf-8") as file:
file.write("radamel falcao\nfernando muslera\nmario lemina\nömer bayram\nmartin linnes\n")
with open("deneme1.txt", "r", encoding="utf-8") as file:
print(file.read())
print("ikinci hali :")
with open("deneme1.txt", "a", encoding="utf-8") as file:
file.write("florin andone\n") # dosyanın son satırına ekleme yapar.
with open("deneme1.txt", "r", encoding="utf-8")as file:
print(file.read())

## dosyanın başında değişiklik yapma işlemleri :
print("1. satır değişikliği :")
with open("deneme1.txt", "r+", encoding="utf-8")as file: # her yerde artık "r+" kullanabiliriz daha rahat.
icerik= file.read()
icerik = "sofian feghuoli\n"+ icerik
print(icerik)

## dosyanın ortasında değişiklik yapma işlemleri :
#readlines() fonk. kullanacağız.
#oluşturduğumuz listeyide for döngüsü ile yazacağız.
with open("deneme1.txt","r+",encoding="utf-8") as file:
liste=file.readlines()
print(liste)
with open("deneme1.txt","r+",encoding="utf-8") as file:
liste.insert(3,"bafetimbi gomis\n") # insert metodunu kullanarak 3. index'e gomis yazdık.
file.seek(0) # dosyanın tekrardan en başına gitmemiz için gerekli.
for i in liste: # for döngüsü kullnarak liste elemanlarını taradık.
file.write(i) # file.write(i) diyerek elemanlarımızı dosyaya da yazdırdık.
with open("deneme1.txt","r+",encoding="utf-8") as file:
print(file.read()) # en son ki durumu okumak için.