{"id":31061,"date":"2025-10-05T07:41:03","date_gmt":"2025-10-05T04:41:03","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31061"},"modified":"2025-10-05T07:41:03","modified_gmt":"2025-10-05T04:41:03","slug":"python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/","title":{"rendered":"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma"},"content":{"rendered":"<p><body><\/p>\n<h2>Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma<\/h2>\n<p>Python, veri i\u015fleme ve depolama konusunda son derece g\u00fc\u00e7l\u00fc bir programlama dilidir. Bu g\u00fcc\u00fcn \u00f6nemli bir k\u0131sm\u0131, dosya sistemleriyle etkile\u015fim kurabilme yetene\u011finden gelir. Bir\u00e7ok uygulama, yap\u0131land\u0131rma verilerini, kullan\u0131c\u0131 girdilerini, g\u00fcnl\u00fckleri veya di\u011fer dinamik bilgileri depolamak i\u00e7in dosyalara ihtiya\u00e7 duyar. Python&#8217;da bu etkile\u015fimin temel ta\u015f\u0131 ise <code>open()<\/code> fonksiyonudur. Bu makale, <code>open()<\/code> fonksiyonunun derinlemesine bir incelemesini sunarak, dosyalar\u0131 nas\u0131l g\u00fcvenli ve etkili bir \u015fekilde a\u00e7aca\u011f\u0131n\u0131z\u0131, okuyaca\u011f\u0131n\u0131z\u0131 ve yazaca\u011f\u0131n\u0131z\u0131 detayl\u0131 \u00f6rneklerle a\u00e7\u0131klayacakt\u0131r.<\/p>\n<h3>Giri\u015f: Neden Dosya \u0130\u015flemleri \u00d6nemlidir?<\/h3>\n<p>Yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, programlar\u0131n sadece bellek \u00fczerinde \u00e7al\u0131\u015fan, ge\u00e7ici verilerle s\u0131n\u0131rl\u0131 kalmas\u0131 nadiren yeterlidir. Kal\u0131c\u0131 depolama, yani verilerin program sonland\u0131ktan sonra bile eri\u015filebilir olmas\u0131, modern uygulamalar\u0131n temel bir gereksinimidir. Bu noktada dosyalar devreye girer. Metin dosyalar\u0131, resimler, videolar, veritabanlar\u0131 veya yap\u0131land\u0131r\u0131lm\u0131\u015f veri formatlar\u0131 (JSON, XML vb.) gibi farkl\u0131 t\u00fcrdeki verileri dosyalar arac\u0131l\u0131\u011f\u0131yla saklayabiliriz. Python&#8217;\u0131n <code>open()<\/code> fonksiyonu, bu dosya tabanl\u0131 i\u015flemler i\u00e7in birincil aray\u00fcz\u00fc sa\u011flar. Dosyalar\u0131 do\u011fru bir \u015fekilde y\u00f6netmek, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak, hatalar\u0131 \u00f6nlemek ve uygulaman\u0131z\u0131n g\u00fcvenilirli\u011fini art\u0131rmak i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h3>Temel Kullan\u0131m ve S\u00f6z Dizimi<\/h3>\n<p><code>open()<\/code> fonksiyonu, bir dosyay\u0131 belirtilen modda a\u00e7ar ve bir dosya nesnesi d\u00f6nd\u00fcr\u00fcr. Bu dosya nesnesi, dosya \u00fczerinde okuma, yazma veya di\u011fer i\u015flemleri ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4><code>open()<\/code> Fonksiyonunun Genel Yap\u0131s\u0131<\/h4>\n<p><code>open()<\/code> fonksiyonunun en temel s\u00f6z dizimi a\u015fa\u011f\u0131daki gibidir:<\/p>\n<pre><code class=\"language-python\">open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)<\/code><\/pre>\n<p>Bu parametrelerin her birinin belirli bir amac\u0131 vard\u0131r, ancak \u00e7o\u011fu durumda yaln\u0131zca <code>file<\/code> ve <code>mode<\/code> parametreleri kullan\u0131l\u0131r.<\/p>\n<p>*   <strong><code>file<\/code><\/strong>: A\u00e7\u0131lacak dosyan\u0131n yolunu ve ad\u0131n\u0131 belirten bir dize (string) veya bayt (bytes) nesnesidir. \u00d6rne\u011fin, <code>\"veri.txt\"<\/code> veya <code>\"\/home\/kullanici\/belgeler\/rapor.csv\"<\/code>.<br \/>\n*   <strong><code>mode<\/code><\/strong>: Dosyan\u0131n hangi ama\u00e7la a\u00e7\u0131laca\u011f\u0131n\u0131 belirten iste\u011fe ba\u011fl\u0131 bir dizedir. Varsay\u0131lan de\u011fer <code>'r'<\/code> (okuma) modudur. Bu parametre, dosya i\u015flemlerinin kalbini olu\u015fturur ve detayl\u0131ca incelenmesi gerekir.<br \/>\n*   <strong><code>encoding<\/code><\/strong>: Dosyan\u0131n okunurken veya yaz\u0131l\u0131rken kullan\u0131lacak karakter kodlamas\u0131n\u0131 belirtir. Metin dosyalar\u0131 i\u00e7in \u00e7ok \u00f6nemlidir. Varsay\u0131lan de\u011fer i\u015fletim sistemine ba\u011fl\u0131d\u0131r (genellikle UTF-8).<br \/>\n*   Di\u011fer parametreler (<code>buffering<\/code>, <code>errors<\/code>, <code>newline<\/code>, <code>closefd<\/code>, <code>opener<\/code>) daha \u00f6zel durumlar i\u00e7in kullan\u0131l\u0131r ve \u00e7o\u011fu zaman varsay\u0131lan de\u011ferlerinde b\u0131rak\u0131labilirler.<\/p>\n<h4>Dosya Yollar\u0131<\/h4>\n<p>Dosya yolu, a\u00e7mak istedi\u011finiz dosyan\u0131n konumunu belirtir. \u0130ki t\u00fcr dosya yolu vard\u0131r:<\/p>\n<p>*   <strong>Mutlak Yol (Absolute Path)<\/strong>: Dosyan\u0131n dosya sistemindeki tam konumunu belirtir. \u00d6rne\u011fin, Windows&#8217;ta <code>C:\\Users\\Kullanici\\Belgeler\\dosya.txt<\/code> veya Linux\/macOS&#8217;ta <code>\/home\/kullanici\/belgeler\/dosya.txt<\/code>.<br \/>\n*   <strong>G\u00f6receli Yol (Relative Path)<\/strong>: Python beti\u011finizin \u00e7al\u0131\u015ft\u0131\u011f\u0131 dizine g\u00f6re dosyan\u0131n konumunu belirtir. \u00d6rne\u011fin, beti\u011finizle ayn\u0131 dizinde olan bir dosya i\u00e7in sadece <code>dosya.txt<\/code> yazmak yeterlidir. E\u011fer dosya, beti\u011fin \u00e7al\u0131\u015ft\u0131\u011f\u0131 dizindeki bir alt klas\u00f6rdeyse <code>alt_klasor\/dosya.txt<\/code> \u015feklinde belirtilir.<\/p>\n<pre><code class=\"language-python\"># Mutlak yol \u00f6rne\u011fi (i\u015fletim sisteminize g\u00f6re de\u011fi\u015ftirin)\ntry:\n    f = open(\"C:\\\\Users\\\\Kullanici\\\\Desktop\\\\ornek.txt\", \"r\") # Windows\n    # f = open(\"\/home\/kullanici\/Desktop\/ornek.txt\", \"r\") # Linux\/macOS\n    print(\"Dosya ba\u015far\u0131yla a\u00e7\u0131ld\u0131 (mutlak yol).\")\n    f.close()\nexcept FileNotFoundError:\n    print(\"Belirtilen yolda dosya bulunamad\u0131.\")\n\n<h2>G\u00f6receli yol \u00f6rne\u011fi (beti\u011fin \u00e7al\u0131\u015ft\u0131\u011f\u0131 dizinde 'ornek.txt' olmal\u0131)<\/h2>\ntry:\n    f = open(\"ornek.txt\", \"r\")\n    print(\"Dosya ba\u015far\u0131yla a\u00e7\u0131ld\u0131 (g\u00f6receli yol).\")\n    f.close()\nexcept FileNotFoundError:\n    print(\"Belirtilen yolda dosya bulunamad\u0131.\")<\/code><\/pre>\n<p>Windows yollar\u0131nda <code>\\<\/code> karakteri \u00f6zel bir anlam ta\u015f\u0131d\u0131\u011f\u0131 i\u00e7in <code>\\\\<\/code> veya ham dizeler (<code>r\"C:\\Users\\Kullanici\\...\"<\/code>) kullanmak daha g\u00fcvenlidir. Linux\/macOS&#8217;ta <code>\/<\/code> kullan\u0131l\u0131r ve bu t\u00fcr bir soruna yol a\u00e7maz.<\/p>\n<h4>Mod Parametresi (<code>mode<\/code>) Detayl\u0131 \u0130ncelemesi<\/h4>\n<p><code>mode<\/code> parametresi, dosya i\u015flemleri i\u00e7in en kritik ayarlardan biridir. Tek bir karakter veya karakter kombinasyonlar\u0131ndan olu\u015fur.<\/p>\n<h5>Temel Modlar<\/h5>\n<p>*   <strong><code>'r'<\/code> (read &#8211; okuma)<\/strong>: Dosyay\u0131 okuma modunda a\u00e7ar. Dosya mevcut de\u011filse <code>FileNotFoundError<\/code> hatas\u0131 verir. Dosya i\u015faret\u00e7isi (cursor) dosyan\u0131n ba\u015f\u0131nda yer al\u0131r. Varsay\u0131lan moddur.<br \/>\n*   <strong><code>'w'<\/code> (write &#8211; yazma)<\/strong>: Dosyay\u0131 yazma modunda a\u00e7ar. E\u011fer dosya mevcutsa, <strong>i\u00e7eri\u011fini tamamen siler<\/strong> ve bo\u015f bir dosya olarak yeniden olu\u015fturur. Dosya mevcut de\u011filse, yeni bir dosya olu\u015fturur. Dosya i\u015faret\u00e7isi dosyan\u0131n ba\u015f\u0131nda yer al\u0131r.<br \/>\n*   <strong><code>'a'<\/code> (append &#8211; ekleme)<\/strong>: Dosyay\u0131 ekleme modunda a\u00e7ar. E\u011fer dosya mevcutsa, yeni veriler dosyan\u0131n sonuna eklenir. Dosya mevcut de\u011filse, yeni bir dosya olu\u015fturur. Dosya i\u015faret\u00e7isi dosyan\u0131n sonunda yer al\u0131r.<br \/>\n*   <strong><code>'x'<\/code> (exclusive creation &#8211; \u00f6zel olu\u015fturma)<\/strong>: Dosyay\u0131 yaln\u0131zca olu\u015fturma modunda a\u00e7ar. E\u011fer dosya zaten mevcutsa, <code>FileExistsError<\/code> hatas\u0131 verir. Bu mod, bir dosyan\u0131n yanl\u0131\u015fl\u0131kla \u00fczerine yaz\u0131lmas\u0131n\u0131 \u00f6nlemek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<br \/>\n*   <strong><code>'b'<\/code> (binary &#8211; ikili)<\/strong>: Dosyay\u0131 ikili modda a\u00e7ar. Metin dosyalar\u0131 yerine resimler, sesler veya di\u011fer ikili verilerle \u00e7al\u0131\u015f\u0131rken kullan\u0131l\u0131r. Bu mod, di\u011fer modlarla birlikte kullan\u0131l\u0131r (\u00f6rne\u011fin, <code>'rb'<\/code>, <code>'wb'<\/code>, <code>'ab'<\/code>).<br \/>\n*   <strong><code>'t'<\/code> (text &#8211; metin)<\/strong>: Dosyay\u0131 metin modunda a\u00e7ar. Bu, varsay\u0131lan moddur ve genellikle a\u00e7\u0131k\u00e7a belirtilmez. Metin modunda okuma ve yazma i\u015flemleri karakter kodlamas\u0131 kullan\u0131r. Di\u011fer modlarla birlikte kullan\u0131l\u0131r (\u00f6rne\u011fin, <code>'rt'<\/code>, <code>'wt'<\/code>, <code>'at'<\/code>).<\/p>\n<h5>Mod Kombinasyonlar\u0131<\/h5>\n<p>*   <strong><code>'+'<\/code> (update &#8211; g\u00fcncelleme)<\/strong>: Dosyay\u0131 hem okuma hem de yazma modunda a\u00e7ar. Bu mod, di\u011fer temel modlarla birlikte kullan\u0131l\u0131r (\u00f6rne\u011fin, <code>'r+'<\/code>, <code>'w+'<\/code>, <code>'a+'<\/code>).<br \/>\n    *   <strong><code>'r+'<\/code><\/strong>: Dosyay\u0131 hem okuma hem de yazma modunda a\u00e7ar. Dosya mevcut olmal\u0131d\u0131r. Dosya i\u015faret\u00e7isi ba\u015fta yer al\u0131r.<br \/>\n    *   <strong><code>'w+'<\/code><\/strong>: Dosyay\u0131 hem okuma hem de yazma modunda a\u00e7ar. Dosya mevcutsa i\u00e7eri\u011fini siler, yoksa olu\u015fturur. Dosya i\u015faret\u00e7isi ba\u015fta yer al\u0131r.<br \/>\n    *   <strong><code>'a+'<\/code><\/strong>: Dosyay\u0131 hem okuma hem de yazma modunda a\u00e7ar. Dosya mevcutsa sona ekler, yoksa olu\u015fturur. Okuma i\u015flemleri i\u00e7in i\u015faret\u00e7i ba\u015fta, yazma i\u015flemleri i\u00e7in sonda yer al\u0131r.<\/p>\n<pre><code class=\"language-python\"># 'r' modu - okuma\ntry:\n    f = open(\"metin.txt\", \"r\")\n    print(\"metin.txt okuma modunda a\u00e7\u0131ld\u0131.\")\n    f.close()\nexcept FileNotFoundError:\n    print(\"metin.txt bulunamad\u0131.\")\n\n<h2>'w' modu - yazma (dikkat: mevcut i\u00e7eri\u011fi siler!)<\/h2>\nf = open(\"yeni_metin.txt\", \"w\")\nf.write(\"Bu yeni bir dosyad\u0131r.\\n\")\nf.close()\nprint(\"yeni_metin.txt yazma modunda olu\u015fturuldu\/g\u00fcncellendi.\")\n\n<h2>'a' modu - ekleme<\/h2>\nf = open(\"yeni_metin.txt\", \"a\")\nf.write(\"Bu eklenen bir sat\u0131rd\u0131r.\\n\")\nf.close()\nprint(\"yeni_metin.txt'ye yeni sat\u0131r eklendi.\")\n\n<h2>'x' modu - \u00f6zel olu\u015fturma<\/h2>\ntry:\n    f = open(\"sadece_olustur.txt\", \"x\")\n    f.write(\"Bu dosya sadece bu \u015fekilde olu\u015fturulabilir.\\n\")\n    f.close()\n    print(\"sadece_olustur.txt ba\u015far\u0131yla olu\u015fturuldu.\")\nexcept FileExistsError:\n    print(\"sadece_olustur.txt zaten mevcut, yeniden olu\u015fturulamad\u0131.\")\n\n<h2>'r+' modu - okuma ve yazma<\/h2>\n<h2>\u00d6nce bir dosya olu\u015ftural\u0131m<\/h2>\nwith open(\"okuma_yazma.txt\", \"w\") as f:\n    f.write(\"\u0130lk sat\u0131r.\\n\u0130kinci sat\u0131r.\\n\")\n\nwith open(\"okuma_yazma.txt\", \"r+\") as f:\n    icerik = f.read()\n    print(f\"r+ ile okunan: {icerik}\")\n    f.seek(0) # \u0130\u015faret\u00e7iyi ba\u015fa al\n    f.write(\"Yeni ba\u015flang\u0131\u00e7. \") # \u0130lk sat\u0131r\u0131n \u00fczerine yazar\n    f.seek(0)\n    print(f\"r+ ile yazd\u0131ktan sonra okunan: {f.read()}\")\n\n<h2>'rb' modu - ikili okuma<\/h2>\ntry:\n    # Ger\u00e7ek bir resim dosyas\u0131 yerine, sadece bir \u00f6rnek olu\u015ftural\u0131m\n    with open(\"ikili_veri.bin\", \"wb\") as f:\n        f.write(b\"\\x01\\x02\\x03\\x04\\xff\\xfe\")\n    \n    with open(\"ikili_veri.bin\", \"rb\") as f:\n        ikili_icerik = f.read()\n        print(f\"\u0130kili veri okundu: {ikili_icerik}\")\nexcept Exception as e:\n    print(f\"\u0130kili veri i\u015flemi hatas\u0131: {e}\")<\/code><\/pre>\n<h3>Dosya Nesnesi ve Kapatma<\/h3>\n<p><code>open()<\/code> fonksiyonu bir dosya nesnesi d\u00f6nd\u00fcr\u00fcr. Bu nesne, dosya \u00fczerinde \u00e7e\u015fitli i\u015flemler yapman\u0131z\u0131 sa\u011flayan metotlara sahiptir. Dosya i\u015flemleri bitti\u011finde, dosyan\u0131n kapat\u0131lmas\u0131 \u00e7ok \u00f6nemlidir.<\/p>\n<h4><code>file.close()<\/code> Metodu<\/h4>\n<p>Bir dosya a\u00e7\u0131ld\u0131\u011f\u0131nda, i\u015fletim sistemi kaynaklar\u0131 kullan\u0131l\u0131r. Bu kaynaklar\u0131n serbest b\u0131rak\u0131lmas\u0131 i\u00e7in dosyan\u0131n kapat\u0131lmas\u0131 gerekir. <code>close()<\/code> metodu, a\u00e7\u0131lan dosyay\u0131 kapat\u0131r ve i\u015fletim sistemi kaynaklar\u0131n\u0131 serbest b\u0131rak\u0131r.<\/p>\n<pre><code class=\"language-python\">f = open(\"metin.txt\", \"r\")\n<h2>Dosya i\u015flemleri...<\/h2>\nf.close() # Dosyay\u0131 kapat<\/code><\/pre>\n<p>Dosyay\u0131 kapatmamak, kaynak s\u0131z\u0131nt\u0131lar\u0131na, dosya bozulmas\u0131na veya ba\u015fka programlar\u0131n ayn\u0131 dosyaya eri\u015fimini engellemeye neden olabilir. Ancak, <code>close()<\/code> metodunu manuel olarak \u00e7a\u011f\u0131rmak, \u00f6zellikle hata durumlar\u0131nda unutulabilir veya atlanabilir. Bu nedenle, Python&#8217;da daha g\u00fcvenli bir y\u00f6ntem tercih edilir.<\/p>\n<h4><code>with open(...) as f:<\/code> \u0130fadesi (Context Manager)<\/h4>\n<p>Python&#8217;da dosya i\u015flemleri i\u00e7in en iyi ve \u00f6nerilen y\u00f6ntem, <code>with<\/code> ifadesiyle birlikte <code>open()<\/code> fonksiyonunu kullanmakt\u0131r. Bu yap\u0131, bir &#8220;context manager&#8221; olarak bilinir ve kod blo\u011fu tamamland\u0131\u011f\u0131nda (ister normal \u015fekilde ister bir hata nedeniyle) dosyan\u0131n otomatik olarak kapat\u0131lmas\u0131n\u0131 garanti eder. Bu, <code>close()<\/code> metodunu manuel olarak \u00e7a\u011f\u0131rma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r ve kaynak y\u00f6netimini basitle\u015ftirir.<\/p>\n<pre><code class=\"language-python\">with open(\"metin.txt\", \"r\") as f:\n    icerik = f.read()\n    print(icerik)\n<h2>'with' blo\u011fundan \u00e7\u0131k\u0131ld\u0131\u011f\u0131nda 'f' otomatik olarak kapan\u0131r.<\/h2>\n<h2>f.close() \u00e7a\u011f\u0131rmaya gerek yoktur.<\/code><\/pre>\n<\/h2>\n<p>Bu y\u00f6ntemin kullan\u0131lmas\u0131, hem kodunuzu daha okunabilir hale getirir hem de olas\u0131 kaynak s\u0131z\u0131nt\u0131lar\u0131n\u0131 \u00f6nler.<\/p>\n<h3>Dosya Okuma \u0130\u015flemleri<\/h3>\n<p>Bir dosyay\u0131 a\u00e7t\u0131ktan sonra, i\u00e7eri\u011fini program\u0131n\u0131za almak i\u00e7in \u00e7e\u015fitli okuma metotlar\u0131 kullanabilirsiniz.<\/p>\n<h4><code>read()<\/code> Metodu<\/h4>\n<p><code>read()<\/code> metodu, dosyan\u0131n t\u00fcm i\u00e7eri\u011fini tek bir dize olarak okur. E\u011fer dosya \u00e7ok b\u00fcy\u00fckse, bu durum bellek sorunlar\u0131na yol a\u00e7abilir.<\/p>\n<pre><code class=\"language-python\">with open(\"ornek.txt\", \"r\", encoding=\"utf-8\") as f:\n    icerik = f.read()\n    print(icerik)<\/code><\/pre>\n<p><code>read(n)<\/code> \u015feklinde bir arg\u00fcman ile \u00e7a\u011fr\u0131l\u0131rsa, <code>n<\/code> karakter (metin modunda) veya <code>n<\/code> bayt (ikili modda) okur.<\/p>\n<pre><code class=\"language-python\">with open(\"ornek.txt\", \"r\", encoding=\"utf-8\") as f:\n    ilk_on_karakter = f.read(10)\n    print(f\"\u0130lk 10 karakter: {ilk_on_karakter}\")\n    kalan_icerik = f.read() # Kalan i\u00e7eri\u011fi okur\n    print(f\"Kalan i\u00e7erik: {kalan_icerik}\")<\/code><\/pre>\n<h4><code>readline()<\/code> Metodu<\/h4>\n<p><code>readline()<\/code> metodu, dosyadan tek bir sat\u0131r okur. Her \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda bir sonraki sat\u0131r\u0131 d\u00f6nd\u00fcr\u00fcr. Sat\u0131r sonu karakteri (<code>\\n<\/code>) de okunan dizeye dahil edilir. Dosyan\u0131n sonuna ula\u015f\u0131ld\u0131\u011f\u0131nda bo\u015f bir dize (<code>''<\/code>) d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-python\">with open(\"ornek.txt\", \"r\", encoding=\"utf-8\") as f:\n    satir1 = f.readline()\n    satir2 = f.readline()\n    print(f\"\u0130lk sat\u0131r: {satir1.strip()}\") # .strip() ile \\n kald\u0131r\u0131labilir\n    print(f\"\u0130kinci sat\u0131r: {satir2.strip()}\")<\/code><\/pre>\n<h4><code>readlines()<\/code> Metodu<\/h4>\n<p><code>readlines()<\/code> metodu, dosyadaki t\u00fcm sat\u0131rlar\u0131 okur ve her sat\u0131r\u0131 bir liste eleman\u0131 olarak i\u00e7eren bir liste d\u00f6nd\u00fcr\u00fcr. Her eleman, sat\u0131r sonu karakterini de i\u00e7erir.<\/p>\n<pre><code class=\"language-python\">with open(\"ornek.txt\", \"r\", encoding=\"utf-8\") as f:\n    satirlar = f.readlines()\n    for satir in satirlar:\n        print(satir.strip())<\/code><\/pre>\n<h4>Dosya Nesnesi \u00dczerinde D\u00f6ng\u00fc<\/h4>\n<p>B\u00fcy\u00fck dosyalar\u0131 okumak i\u00e7in en verimli y\u00f6ntem, dosya nesnesinin do\u011frudan bir d\u00f6ng\u00fcde kullan\u0131lmas\u0131d\u0131r. Bu, dosyay\u0131 sat\u0131r sat\u0131r okur ve t\u00fcm i\u00e7eri\u011fi belle\u011fe y\u00fcklemez.<\/p>\n<pre><code class=\"language-python\">with open(\"ornek.txt\", \"r\", encoding=\"utf-8\") as f:\n    for satir in f:\n        print(satir.strip())<\/code><\/pre>\n<p>Bu y\u00f6ntem, \u00f6zellikle \u00e7ok b\u00fcy\u00fck dosyalarla \u00e7al\u0131\u015f\u0131rken bellek verimlili\u011fi a\u00e7\u0131s\u0131ndan tercih edilmelidir.<\/p>\n<h3>Dosya Yazma \u0130\u015flemleri<\/h3>\n<p>Dosyaya veri yazmak i\u00e7in <code>write()<\/code> ve <code>writelines()<\/code> metotlar\u0131 kullan\u0131l\u0131r.<\/p>\n<h4><code>write()<\/code> Metodu<\/h4>\n<p><code>write(string)<\/code> metodu, belirtilen dizeyi dosyaya yazar. Ka\u00e7 karakter yaz\u0131ld\u0131\u011f\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr. <code>write()<\/code> metodu, otomatik olarak bir sat\u0131r sonu karakteri (<code>\\n<\/code>) eklemez; bu nedenle, her sat\u0131r\u0131n sonuna manuel olarak eklemeniz gerekir.<\/p>\n<pre><code class=\"language-python\">with open(\"yeni_dosya.txt\", \"w\", encoding=\"utf-8\") as f:\n    f.write(\"Bu ilk sat\u0131r.\\n\")\n    f.write(\"Bu ikinci sat\u0131r.\\n\")\n    f.write(\"Bu \u00fc\u00e7\u00fcnc\u00fc sat\u0131r.\") # Son sat\u0131ra \\n eklenmedi<\/code><\/pre>\n<p><code>'w'<\/code> modunun, dosya mevcutsa i\u00e7eri\u011fini sildi\u011fini unutmamak \u00f6nemlidir. E\u011fer mevcut bir dosyaya ekleme yapmak istiyorsan\u0131z <code>'a'<\/code> modunu kullanmal\u0131s\u0131n\u0131z.<\/p>\n<pre><code class=\"language-python\">with open(\"yeni_dosya.txt\", \"a\", encoding=\"utf-8\") as f:\n    f.write(\"\\nBu eklenen bir sat\u0131r.\\n\") # Ba\u015f\u0131na \\n ekleyerek yeni sat\u0131rdan ba\u015flamas\u0131n\u0131 sa\u011flar\u0131z\n    f.write(\"Ba\u015fka bir eklenen sat\u0131r.\")<\/code><\/pre>\n<h4><code>writelines()<\/code> Metodu<\/h4>\n<p><code>writelines(list_of_strings)<\/code> metodu, bir dize listesindeki t\u00fcm \u00f6\u011feleri dosyaya yazar. <code>write()<\/code> gibi, <code>writelines()<\/code> de otomatik olarak sat\u0131r sonu karakterleri eklemez. Her dizenin sonunda <code>\\n<\/code> olmas\u0131n\u0131 sa\u011flamak sizin sorumlulu\u011funuzdad\u0131r.<\/p>\n<pre><code class=\"language-python\">satirlar = [\n    \"Birinci sat\u0131r.\\n\",\n    \"\u0130kinci sat\u0131r.\\n\",\n    \"\u00dc\u00e7\u00fcnc\u00fc sat\u0131r.\"\n]\n\nwith open(\"liste_ile_yaz.txt\", \"w\", encoding=\"utf-8\") as f:\n    f.writelines(satirlar)<\/code><\/pre>\n<h3>Karakter Kodlamas\u0131 (<code>encoding<\/code>)<\/h3>\n<p>Metin dosyalar\u0131yla \u00e7al\u0131\u015f\u0131rken <code>encoding<\/code> parametresi \u00e7ok \u00f6nemlidir. Bu parametre, karakterlerin baytlara nas\u0131l d\u00f6n\u00fc\u015ft\u00fcr\u00fclece\u011fini (yazarken) ve baytlar\u0131n karakterlere nas\u0131l d\u00f6n\u00fc\u015ft\u00fcr\u00fclece\u011fini (okurken) belirtir. Yanl\u0131\u015f kodlama kullanmak, <code>UnicodeDecodeError<\/code> veya <code>UnicodeEncodeError<\/code> gibi hatalara yol a\u00e7abilir veya &#8220;bozuk&#8221; karakterler (mojibake) \u00fcretir.<\/p>\n<p>En yayg\u0131n kodlama <strong>UTF-8<\/strong>&#8216;dir ve \u00e7o\u011fu zaman bu kodlamay\u0131 kullanmak en iyi pratiktir, \u00e7\u00fcnk\u00fc \u00e7o\u011fu dili ve karakteri destekler.<\/p>\n<pre><code class=\"language-python\"># UTF-8 ile yazma\nwith open(\"turkce_karakterler.txt\", \"w\", encoding=\"utf-8\") as f:\n    f.write(\"T\u00fcrk\u00e7e karakterler: \u00c7\u011e\u0130\u00d6\u015e\u00dc\u00e7\u011fi\u00f6\u015f\u00fc\\n\")\n\n<h2>UTF-8 ile okuma<\/h2>\nwith open(\"turkce_karakterler.txt\", \"r\", encoding=\"utf-8\") as f:\n    icerik = f.read()\n    print(icerik)\n\n<h2>Yanl\u0131\u015f kodlama ile okuma denemesi (hata verebilir veya bozuk karakterler g\u00f6sterir)<\/h2>\ntry:\n    with open(\"turkce_karakterler.txt\", \"r\", encoding=\"latin-1\") as f:\n        icerik_hatali = f.read()\n        print(f\"Latin-1 ile okunan: {icerik_hatali}\")\nexcept UnicodeDecodeError as e:\n    print(f\"UnicodeDecodeError olu\u015ftu: {e}\")<\/code><\/pre>\n<p>\u0130\u015fletim sisteminizin varsay\u0131lan kodlamas\u0131n\u0131 \u00f6\u011frenmek i\u00e7in <code>locale.getpreferredencoding(False)<\/code> kullanabilirsiniz, ancak ta\u015f\u0131nabilirlik i\u00e7in her zaman a\u00e7\u0131k\u00e7a <code>encoding=\"utf-8\"<\/code> belirtmek daha iyidir.<\/p>\n<h3>\u0130kili (Binary) Dosyalar<\/h3>\n<p>Metin dosyalar\u0131n\u0131n aksine, ikili dosyalar do\u011frudan okunabilir karakterler i\u00e7ermez. Resimler, sesler, videolar, s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f ar\u015fivler (zip, rar) veya y\u00fcr\u00fct\u00fclebilir programlar gibi dosyalar ikili formatta saklan\u0131r. Bu t\u00fcr dosyalarla \u00e7al\u0131\u015f\u0131rken <code>mode<\/code> parametresine <code>'b'<\/code> eklenmelidir (\u00f6rne\u011fin, <code>'rb'<\/code>, <code>'wb'<\/code>, <code>'ab'<\/code>).<\/p>\n<p>\u0130kili modda okuma ve yazma i\u015flemleri, dize yerine <code>bytes<\/code> nesneleriyle yap\u0131l\u0131r.<\/p>\n<pre><code class=\"language-python\"># Bir ikili dosya yazma \u00f6rne\u011fi (\u00f6rne\u011fin, k\u00fc\u00e7\u00fck bir resim veya rastgele veri)\nwith open(\"binary_ornek.bin\", \"wb\") as f:\n    f.write(b'\\x00\\x01\\x02\\x03\\xff\\xfe\\xfd\\xfc') # Byte nesnesi yazma\n    f.write(bytes([10, 20, 30, 40])) # Listeden byte olu\u015fturma\n\n<h2>Bir ikili dosya okuma \u00f6rne\u011fi<\/h2>\nwith open(\"binary_ornek.bin\", \"rb\") as f:\n    data = f.read()\n    print(f\"Okunan ikili veri (bytes): {data}\")\n    print(f\"Verinin tipi: {type(data)}\")\n\n<h2>Bir resim dosyas\u0131n\u0131 kopyalama \u00f6rne\u011fi<\/h2>\ntry:\n    # Ger\u00e7ek bir 'resim.jpg' dosyan\u0131z\u0131n oldu\u011funu varsayal\u0131m\n    with open(\"resim.jpg\", \"rb\") as kaynak:\n        with open(\"resim_kopyasi.jpg\", \"wb\") as hedef:\n            while True:\n                chunk = kaynak.read(4096) # 4KB'l\u0131k par\u00e7alar halinde oku\n                if not chunk:\n                    break\n                hedef.write(chunk)\n    print(\"Resim ba\u015far\u0131yla kopyaland\u0131.\")\nexcept FileNotFoundError:\n    print(\"resim.jpg bulunamad\u0131.\")\nexcept Exception as e:\n    print(f\"Resim kopyalama hatas\u0131: {e}\")<\/code><\/pre>\n<p>\u0130kili modda <code>encoding<\/code> parametresi kullan\u0131lmaz \u00e7\u00fcnk\u00fc karakter kodlamas\u0131 kavram\u0131 ikili veriler i\u00e7in ge\u00e7erli de\u011fildir.<\/p>\n<h3>Dosya \u0130\u015fleme Hatalar\u0131 ve Y\u00f6netimi<\/h3>\n<p>Dosya i\u015flemleri s\u0131ras\u0131nda \u00e7e\u015fitli hatalar meydana gelebilir. Bu hatalar\u0131 do\u011fru bir \u015fekilde y\u00f6netmek, uygulaman\u0131z\u0131n sa\u011flaml\u0131\u011f\u0131n\u0131 art\u0131r\u0131r. Python&#8217;da <code>try...except<\/code> bloklar\u0131 bu ama\u00e7la kullan\u0131l\u0131r.<\/p>\n<h4>Yayg\u0131n Hata T\u00fcrleri<\/h4>\n<p>*   <strong><code>FileNotFoundError<\/code><\/strong>: Belirtilen yolda dosya bulunamad\u0131\u011f\u0131nda (<code>'r'<\/code> modu veya di\u011fer modlarda dosya mevcut de\u011filse) olu\u015fur.<br \/>\n*   <strong><code>FileExistsError<\/code><\/strong>: Dosya zaten mevcutken <code>'x'<\/code> (\u00f6zel olu\u015fturma) modunda dosya olu\u015fturmaya \u00e7al\u0131\u015f\u0131ld\u0131\u011f\u0131nda olu\u015fur.<br \/>\n*   <strong><code>PermissionError<\/code><\/strong>: Dosyaya eri\u015fim izniniz olmad\u0131\u011f\u0131nda (\u00f6rne\u011fin, salt okunur bir dosyaya yazmaya \u00e7al\u0131\u015fmak veya korumal\u0131 bir dizinde dosya olu\u015fturmaya \u00e7al\u0131\u015fmak) olu\u015fur.<br \/>\n*   <strong><code>IOError<\/code> \/ <code>OSError<\/code><\/strong>: Genel giri\u015f\/\u00e7\u0131k\u0131\u015f hatalar\u0131 veya i\u015fletim sistemi kaynakl\u0131 hatalar i\u00e7in kullan\u0131l\u0131r. <code>FileNotFoundError<\/code> ve <code>PermissionError<\/code> asl\u0131nda <code>OSError<\/code>&#8216;\u0131n alt s\u0131n\u0131flar\u0131d\u0131r.<br \/>\n*   <strong><code>UnicodeDecodeError<\/code><\/strong>: Metin modunda bir dosyay\u0131 yanl\u0131\u015f <code>encoding<\/code> ile okumaya \u00e7al\u0131\u015f\u0131ld\u0131\u011f\u0131nda olu\u015fur.<\/p>\n<h4><code>try...except...finally<\/code> ile Hata Y\u00f6netimi<\/h4>\n<pre><code class=\"language-python\">try:\n    with open(\"olmayan_dosya.txt\", \"r\") as f:\n        icerik = f.read()\n        print(icerik)\nexcept FileNotFoundError:\n    print(\"Hata: Dosya bulunamad\u0131.\")\nexcept PermissionError:\n    print(\"Hata: Dosyaya eri\u015fim izniniz yok.\")\nexcept Exception as e: # Di\u011fer t\u00fcm hatalar\u0131 yakalar\n    print(f\"Beklenmeyen bir hata olu\u015ftu: {e}\")\nfinally:\n    print(\"Dosya i\u015flemi tamamland\u0131 (hata olsun veya olmas\u0131n).\")<\/code><\/pre>\n<p><code>finally<\/code> blo\u011fu, <code>try<\/code> blo\u011fundaki kod \u00e7al\u0131\u015fsa da \u00e7al\u0131\u015fmasa da (bir hata olu\u015fsa bile) her zaman y\u00fcr\u00fct\u00fclecek kodu i\u00e7erir. <code>with open(...)<\/code> kullan\u0131rken <code>finally<\/code> blo\u011funa <code>f.close()<\/code> yazmaya gerek yoktur \u00e7\u00fcnk\u00fc <code>with<\/code> ifadesi bunu otomatik olarak halleder. Ancak, <code>with<\/code> kullanm\u0131yorsan\u0131z, <code>finally<\/code> blo\u011fu i\u00e7inde <code>f.close()<\/code> \u00e7a\u011f\u0131rmak \u00f6nemlidir.<\/p>\n<pre><code class=\"language-python\">f = None # f'nin tan\u0131ml\u0131 oldu\u011fundan emin olmak i\u00e7in\ntry:\n    f = open(\"olmayan_dosya.txt\", \"r\")\n    icerik = f.read()\n    print(icerik)\nexcept FileNotFoundError:\n    print(\"Hata: Dosya bulunamad\u0131.\")\nexcept Exception as e:\n    print(f\"Beklenmeyen bir hata olu\u015ftu: {e}\")\nfinally:\n    if f: # E\u011fer f nesnesi olu\u015fturulmu\u015fsa (yani open() ba\u015far\u0131l\u0131 olmu\u015fsa)\n        f.close()\n        print(\"Dosya kapat\u0131ld\u0131 (manuel).\")<\/code><\/pre>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere, <code>with<\/code> ifadesi hata y\u00f6netimini de basitle\u015ftirir.<\/p>\n<h3>Geli\u015fmi\u015f Konular ve \u0130pu\u00e7lar\u0131<\/h3>\n<p><code>open()<\/code> fonksiyonu ve dosya nesneleri, temel okuma\/yazma i\u015flemlerinin \u00f6tesinde daha geli\u015fmi\u015f yetenekler de sunar.<\/p>\n<h4><code>seek()<\/code> ve <code>tell()<\/code> Metotlar\u0131<\/h4>\n<p>Dosya i\u015faret\u00e7isi (cursor), dosya i\u00e7indeki mevcut okuma\/yazma konumunu belirtir.<br \/>\n*   <strong><code>tell()<\/code><\/strong>: Dosya i\u015faret\u00e7isinin mevcut konumunu (dosyan\u0131n ba\u015f\u0131ndan itibaren bayt cinsinden) d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <strong><code>seek(offset, whence=0)<\/code><\/strong>: Dosya i\u015faret\u00e7isini yeni bir konuma ta\u015f\u0131r.<br \/>\n    *   <code>offset<\/code>: Ta\u015f\u0131nacak bayt say\u0131s\u0131.<br \/>\n    *   <code>whence<\/code>: Ba\u015flang\u0131\u00e7 noktas\u0131n\u0131 belirtir:<br \/>\n        *   <code>0<\/code> (SEEK_SET, varsay\u0131lan): Dosyan\u0131n ba\u015f\u0131ndan itibaren <code>offset<\/code> bayt.<br \/>\n        *   <code>1<\/code> (SEEK_CUR): Mevcut konumdan itibaren <code>offset<\/code> bayt.<br \/>\n        *   <code>2<\/code> (SEEK_END): Dosyan\u0131n sonundan itibaren <code>offset<\/code> bayt (genellikle <code>offset<\/code> negatif olmal\u0131d\u0131r).<\/p>\n<p>Metin modunda <code>seek()<\/code> kullan\u0131m\u0131 biraz daha k\u0131s\u0131tl\u0131d\u0131r; genellikle sadece <code>0<\/code> (dosya ba\u015f\u0131na) veya <code>tell()<\/code> taraf\u0131ndan d\u00f6nd\u00fcr\u00fclen bir de\u011ferle kullan\u0131lmal\u0131d\u0131r. \u0130kili modda ise tam esneklik sa\u011flar.<\/p>\n<pre><code class=\"language-python\">with open(\"seek_ornek.txt\", \"w+\") as f:\n    f.write(\"Merhaba D\u00fcnya!\\nPython \u00f6\u011freniyorum.\\n\")\n    \n    f.seek(0) # \u0130\u015faret\u00e7iyi ba\u015fa al\n    print(f\"Ba\u015flang\u0131\u00e7ta konum: {f.tell()}\") # \u00c7\u0131kt\u0131: 0\n    \n    ilk_bes = f.read(5)\n    print(f\"\u0130lk 5 karakter: {ilk_bes}\") # \u00c7\u0131kt\u0131: Merha\n    print(f\"Okuma sonras\u0131 konum: {f.tell()}\") # \u00c7\u0131kt\u0131: 5 (UTF-8'de her karakter 1 bayt ise)\n    \n    f.seek(8) # Konumu 8. bayta ta\u015f\u0131\n    print(f\"8. bayttan itibaren: {f.read()}\") # \u00c7\u0131kt\u0131: D\u00fcnya! Python \u00f6\u011freniyorum.\n    \n    f.seek(0) # Ba\u015fa d\u00f6n\n    f.write(\"Selam\") # \"Merhaba\" \u00fczerine yazar\n    f.seek(0)\n    print(f\"Yazma sonras\u0131 i\u00e7erik: {f.read()}\") # \u00c7\u0131kt\u0131: Selam D\u00fcnya! Python \u00f6\u011freniyorum.<\/code><\/pre>\n<h4><code>flush()<\/code> Metodu<\/h4>\n<p>Python, yazma i\u015flemlerini daha verimli hale getirmek i\u00e7in verileri do\u011frudan diske yazmak yerine bir tampon bellekte (buffer) tutabilir. <code>flush()<\/code> metodu, tampon bellekteki t\u00fcm verileri diske yazmaya zorlar. Bu, \u00f6zellikle program \u00e7\u00f6kmesi durumunda veri kayb\u0131n\u0131 \u00f6nlemek veya ba\u015fka bir s\u00fcrecin dosyan\u0131n en g\u00fcncel haline eri\u015fmesini sa\u011flamak istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r. <code>close()<\/code> metodu \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda veya <code>with<\/code> blo\u011fundan \u00e7\u0131k\u0131ld\u0131\u011f\u0131nda otomatik olarak <code>flush()<\/code> i\u015flemi yap\u0131l\u0131r.<\/p>\n<pre><code class=\"language-python\">with open(\"flush_ornek.txt\", \"w\") as f:\n    f.write(\"Bu veri tamponda olabilir.\")\n    # Bu noktada, veri diske yaz\u0131lmam\u0131\u015f olabilir.\n    f.flush() # Veriyi diske yazmaya zorla\n    print(\"Veri diske yaz\u0131ld\u0131 (flush ile).\")\n    # Program burada \u00e7\u00f6kse bile, flush_ornek.txt'de bu veri olacakt\u0131r.<\/code><\/pre>\n<h4><code>truncate()<\/code> Metodu<\/h4>\n<p><code>truncate(size=None)<\/code> metodu, dosyan\u0131n boyutunu belirtilen <code>size<\/code> kadar k\u00fc\u00e7\u00fclt\u00fcr. E\u011fer <code>size<\/code> belirtilmezse, dosya i\u015faret\u00e7isinin mevcut konumuna kadar olan k\u0131sm\u0131 korur ve geri kalan\u0131n\u0131 siler. Dosya i\u015faret\u00e7isi <code>truncate()<\/code> i\u015fleminden etkilenmez.<\/p>\n<pre><code class=\"language-python\">with open(\"truncate_ornek.txt\", \"w+\") as f:\n    f.write(\"Bu uzun bir metin dosyas\u0131d\u0131r.\\n\")\n    f.write(\"K\u0131saltma i\u015flemini test etmek i\u00e7in buraday\u0131z.\\n\")\n    \n    f.seek(0)\n    print(f\"Ba\u015flang\u0131\u00e7 boyutu: {len(f.read())}\") # \u00d6nce t\u00fcm\u00fcn\u00fc oku\n    \n    f.seek(20) # \u0130\u015faret\u00e7iyi 20. bayta ta\u015f\u0131\n    f.truncate() # Dosyay\u0131 mevcut konumuna kadar k\u0131salt\n    \n    f.seek(0)\n    print(f\"K\u0131saltma sonras\u0131 i\u00e7erik: {f.read()}\") # \u00c7\u0131kt\u0131: Bu uzun bir metin<\/code><\/pre>\n<h4>B\u00fcy\u00fck Dosyalarla \u00c7al\u0131\u015fma<\/h4>\n<p>\u00c7ok b\u00fcy\u00fck dosyalarla \u00e7al\u0131\u015f\u0131rken, dosyan\u0131n tamam\u0131n\u0131 belle\u011fe y\u00fcklemek (\u00f6rne\u011fin <code>read()<\/code> veya <code>readlines()<\/code> ile) bellek yetersizli\u011fi sorunlar\u0131na yol a\u00e7abilir. Bu durumda, dosyay\u0131 sat\u0131r sat\u0131r veya par\u00e7alar halinde okumak en iyi yakla\u015f\u0131md\u0131r.<\/p>\n<p>*   <strong>Sat\u0131r Sat\u0131r Okuma<\/strong>: <code>for line in file_object:<\/code> yap\u0131s\u0131 en verimli yoldur.<br \/>\n*   <strong>Par\u00e7alar Halinde Okuma (Chunking)<\/strong>: \u0130kili dosyalar veya \u00f6zel metin i\u015fleme durumlar\u0131 i\u00e7in <code>read(n)<\/code> metodunu bir d\u00f6ng\u00fc i\u00e7inde kullanarak dosyay\u0131 belirli bayt boyutlar\u0131ndaki par\u00e7alar halinde okuyabilirsiniz.<\/p>\n<pre><code class=\"language-python\"># Chunking \u00f6rne\u011fi (\u00f6zellikle ikili dosyalar i\u00e7in uygun, ama metin i\u00e7in de kullan\u0131labilir)\nwith open(\"buyuk_dosya.txt\", \"r\") as f:\n    while True:\n        chunk = f.read(1024) # 1KB'l\u0131k par\u00e7alar halinde oku\n        if not chunk:\n            break\n        # chunk \u00fczerinde i\u015flemler yap\n        print(f\"Okunan par\u00e7a boyutu: {len(chunk)}\")\n        # \u00d6rne\u011fin, bu chunk'\u0131 ba\u015fka bir dosyaya yazabilir veya i\u015fleyebilirsiniz.<\/code><\/pre>\n<h3>Sonu\u00e7<\/h3>\n<p>Python&#8217;\u0131n <code>open()<\/code> fonksiyonu, dosya sistemleriyle etkile\u015fim kurmak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Dosyalar\u0131 do\u011fru modda a\u00e7mak, <code>with<\/code> ifadesiyle g\u00fcvenli bir \u015fekilde y\u00f6netmek ve uygun okuma\/yazma metotlar\u0131n\u0131 kullanmak, sa\u011flam ve verimli uygulamalar geli\u015ftirmenin anahtar\u0131d\u0131r. Karakter kodlamas\u0131n\u0131n \u00f6nemini anlamak ve ikili dosyalarla \u00e7al\u0131\u015f\u0131rken <code>bytes<\/code> nesnelerini kullanmak, yayg\u0131n hatalardan ka\u00e7\u0131nman\u0131za yard\u0131mc\u0131 olacakt\u0131r. <code>seek()<\/code>, <code>tell()<\/code>, <code>flush()<\/code> ve <code>truncate()<\/code> gibi geli\u015fmi\u015f metotlar, dosya i\u015flemleri \u00fczerinde daha fazla kontrol sa\u011flar. B\u00fcy\u00fck dosyalarla \u00e7al\u0131\u015f\u0131rken bellek verimlili\u011fini g\u00f6z \u00f6n\u00fcnde bulundurarak ak\u0131ll\u0131 okuma stratejileri benimsemek de kritik \u00f6neme sahiptir. Bu makaledeki bilgiler ve \u00f6rnekler, Python&#8217;da dosya i\u015flemlerinde ustala\u015fman\u0131z i\u00e7in sa\u011flam bir temel olu\u015fturacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma\nPython, veri i\u015fleme ve depolama konusunda son derece g\u00fc\u00e7l\u00fc bir programla","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1403],"tags":[],"class_list":{"0":"post-31061","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma\" \/>\n<meta property=\"og:description\" content=\"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma Python, veri i\u015fleme ve depolama konusunda son derece g\u00fc\u00e7l\u00fc bir programla\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-05T04:41:03+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma\",\"datePublished\":\"2025-10-05T04:41:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/\"},\"wordCount\":2279,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/\",\"name\":\"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-05T04:41:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/","og_locale":"tr_TR","og_type":"article","og_title":"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma","og_description":"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma Python, veri i\u015fleme ve depolama konusunda son derece g\u00fc\u00e7l\u00fc bir programla","og_url":"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-05T04:41:03+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma","datePublished":"2025-10-05T04:41:03+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/"},"wordCount":2279,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/","url":"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/","name":"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-05T04:41:03+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/python-open-fonksiyonu-aciklamasi-dosyalari-acma-okuma-ve-yazma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python open() Fonksiyonu A\u00e7\u0131klamas\u0131: Dosyalar\u0131 A\u00e7ma, Okuma ve Yazma"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31061"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31061\/revisions"}],"predecessor-version":[{"id":31062,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31061\/revisions\/31062"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}