File Operations in Python, tell(), seek()

Kategori: Python , 05 Eylül 2019 , JanFranco


Dosya okuma, dosyaya yazma işlemlerini gördük. Dosya işlemleri hakkında son yazıyı yazıyorum, bu yazımda tell() ve seek() methodlarından bahsedeceğim.
tell() methodu dosya imlecinin nerede olduğunun byte olarak bilgisini verir. Önceki yazılardaki doc.txt üzerinden devam edelim. Dosya içeriğinde "Jan Franco\n" ve "Jane Franco" verileri vardı. Kopyala yapıştır ile bunu çoğalttım:


with open("doc.txt", "r", encoding="utf-8") as file:
    print(file.tell())
>>
0
Dosyayı açtık ve ilk olarak tell() methodunu kullandık. Henüz dosya ile herhangi bir işlem yapmadık. Bu nedenle dosya imleci dosyanın henüz başında ve 0 bilgisini aldık.
seek() methodu ile dosya imlecini manipüle edebiliriz. Parametre olarak örneğin 5 verirsek, dosya imlecini 5. byte'a götürür. Bir örnek yapalım:


with open("doc.txt", "r", encoding="utf-8") as file:
    file.seek(5)
    cont = file.read(10)
    print(cont)
    file.seek(0)
    cont_2 = file.read(6)
    print(cont_2)
>>
ranco
Jane
Jan Fr
Bahsetmedim fakat read() methodu parametre alabilir, aldığı parametre kadar byte okuyabilir.
Dosyanın başına, ortasına ve sonuna veri yazalım. Eğer dosyayı ilk kez açıyorsak direk olarak yazma işlemini gerçekleştirebiliriz. Ancak eğer dosyada işlem yaptık ve dosyanın imleci başta değil ise:


with open("doc.txt", "r+", encoding="utf-8") as file:
    cont = file.read()
    cont = "Head of the file\n" + cont
    file.seek(0)
    file.write(cont)
Burada dosyayı 'r+' kip ile açtık. 'r+' kipi hem okuma hem yazma işlemler için kullanılır. Tüm dosyayı read() methodu ile okuduk. Stringin başına bir veri ekledik. Daha sonra seek() methodu ile dosyanın başına gittik ve tüm stringi dosyaya yazdık.
Dosyanın sonuna yazmak için basitçe 'a' kipini kullanabiliriz:


with open("doc.txt", "a", encoding="utf-8") as file:
    file.write("End of the file\n")
Dosyanın orta kısımlarına veri eklemek için:


with open("doc.txt", "r+", encoding="utf-8") as file:
    list_1 = file.readlines()
    list_1.insert(3, "Somewhere middle in the file\n")
    file.seek(0)
    for i in list_1:
        file.write(i)
Burada tüm satırları readlines() methodu ile bir listeye attık. insert() methodu ile 3. sıraya bir veri ekledik. seek() methodu ile dosyanın başına gittik ve for döngüsü ile listenin elemanlarını sırasıyla dosyaya yazdık. Burada listenin uzunluğu / 2 yaparak tam ortaya da ekleyebilirdik. Dosyanın başına, ortasına ve sonuna veriler ekledik. Dosyanın son hali:


Head of the file
Jan Franco
Jane Franco
Somewhere middle in the file
Jan Franco
Jane Franco
Jan Franco
Jane Franco
Jan Franco
Jane Franco
Jan Franco
Jane Franco
End of the file
Son örnekte for döngüsü ile listenin elemanlarını yazmıştık fakat basitçe writelines() methodunu da kullanabilirdik:


with open("doc.txt", "r+", encoding="utf-8") as file:
    list_1 = file.readlines()
    list_1.insert(3, "JanFranco\n")
    file.seek(0)
    file.writelines(list_1)


Sonraki Yazı: Numerical and String Operations
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın