{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Dosyalarda Değişiklik Yapmak\n", "\n", "Bu derste dosyalarda değişiklik yapmayı öğrenmeye çalışacağız. Bunun için 2 farklı yolu öğrenmeye çalışacağız. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### seek() ve write()\n", "\n", "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." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mustafa Murat Coşkun\n", "Oğuz Artıran\n", "Serhat Say\n", "Mehmet Gençol\n" ] } ], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file:\n", " print(file.read())" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file: \n", " file.seek(10) # 10. byte\n", " file.write(\"Deneme\")" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mustafa MuDenemeşkun\n", "Oğuz Artıran\n", "Serhat Say\n", "Mehmet Gençol\n", "\n" ] } ], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file:\n", " print(file.read())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu şekilde bir şeyler yapmak isterseniz bu yöntemi kullanabilirsiniz " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dosyanın Sonunda Değişiklik Yapmak\n", "\n", "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." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": true }, "outputs": [], "source": [ "with open(\"bilgiler.txt\",\"a\",encoding = \"utf-8\") as file:\n", " file.write(\"Mert Erarslan\\n\") # \"append\" metoduyla açılan bir dosyanın imleci direk dosyanın sonunda olduğu için sadece write" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mustafa Murat Coşkun\n", "Oğuz Artıran\n", "Serhat Say\n", "Mehmet Gençol\n", "Mert Erarslan\n", "\n" ] } ], "source": [ "with open(\"bilgiler.txt\",\"r\",encoding = \"utf-8\") as file:\n", " print(file.read())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dosyanın Başında Değişiklik Yapmak\n", "\n", "\"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." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mustafa Murat Coşkun\n", "Oğuz Artıran\n", "Serhat Say\n", "Mehmet Gençol\n", "Mert Erarslan\n", "\n" ] } ], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file:\n", " icerik = file.read()\n", " print(icerik)\n", " " ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": true }, "outputs": [], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file:\n", " icerik = file.read()\n", " \n", " icerik = \"Semih Aktaş\\n\" + icerik\n", " file.seek(0)\n", " file.write(icerik)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Semih Aktaş\n", "Mustafa Murat Coşkun\n", "Oğuz Artıran\n", "Serhat Say\n", "Mehmet Gençol\n", "Mert Erarslan\n", "\n" ] } ], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file:\n", " icerik = file.read()\n", " print(icerik)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "İşte bu kadar ! Son olarak da dosyaların ortasında değişiklik yapmayı öğrenmeye çalışalım." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dosyanın Ortasında Değişiklik Yapmak\n", "\n", "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." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Semih Aktaş\\n', 'Mustafa Murat Coşkun\\n', 'Oğuz Artıran\\n', 'Serhat Say\\n', 'Mehmet Gençol\\n', 'Mert Erarslan\\n']\n" ] } ], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file:\n", " print(file.readlines())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ö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." ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": true }, "outputs": [], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file:\n", " liste = file.readlines()\n", " liste.insert(3,\"Mehmet Keper\\n\")\n", " file.seek(0)\n", " for satır in liste:\n", " file.write(satır)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Semih Aktaş\n", "Mustafa Murat Coşkun\n", "Oğuz Artıran\n", "Mehmet Keper\n", "Serhat Say\n", "Mehmet Gençol\n", "Mert Erarslan\n", "\n" ] } ], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file:\n", " icerik = file.read()\n", " print(icerik)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "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." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file:\n", " liste = file.readlines()\n", " liste.insert(3,\"Ahmet Baltacı\\n\")\n", " file.seek(0)\n", " file.writelines(liste)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Semih Aktaş\n", "Mustafa Murat Coşkun\n", "Oğuz Artıran\n", "Ahmet Baltacı\n", "Mehmet Keper\n", "Serhat Say\n", "Mehmet Gençol\n", "Mert Erarslan\n", "\n" ] } ], "source": [ "with open(\"bilgiler.txt\",\"r+\",encoding = \"utf-8\") as file:\n", " icerik = file.read()\n", " print(icerik)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "İş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." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }