[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-python-ile-dosya-okuma-ve-yazma-pratik-ornekler-ve-kod-ipuclari":3},{"dataItem":4,"heading":36,"metaData":38,"schema":81},["Reactive",5],{"id":6,"title":7,"summary":8,"content":9,"seo_title":10,"seo_description":11,"seo_keywords":12,"slug":13,"createdAt":14,"updatedAt":14,"blog_categories":15,"authors":19,"image":24,"thumb":25,"image_webp":26,"thumb_webp":27,"rating":28,"heading_title":7,"heading_sub_title":17,"readingTime":29,"url":34,"comments":35,"meta_cover":24},26866,"Python ile dosya okuma ve yazma: pratik örnekler ve kod ipuçları","Bu makalede Python'da dosya okuma ve yazma işlemlerinin temelleri; 'with open' kullanımı, text vs binary modlar, encoding ipuçları ve platforma uygun dosya yolu yönetimi pratik örneklerle açıklanmıştır.","\u003Ch2>Python ile dosya okuma ve yazma: pratik örnekler ve kod ipuçları\u003C/h2>\n\u003Cp>Python'da dosya işlemleri için en temel araç \u003Cstrong>open()\u003C/strong> fonksiyonudur. Bu rehberde hem basit hem de üretim-benzeri senaryolar için kullanışlı \u003Cstrong>python kod snippetleri\u003C/strong> paylaşacağım: 'with open' ile güvenli dosya kullanımı, \u003Cem>encoding\u003C/em> yönetimi, ikili (binary) okuma/yazma ve platform bağımsız dosya yolu yönetimi gibi konulara odaklanacağız. Resmi belgelerde daha fazla ayrıntı için Python dokümantasyonuna bakabilirsiniz: \u003Ca href=\"https://docs.python.org/tr/3.10/tutorial/inputoutput.html\">Girdi ve Çıktı\u003C/a> ve \u003Ca href=\"https://docs.python.org/tr/3.10/library/io.html\">io kütüphanesi\u003C/a>.\u003C/p>\n\n\u003Ch3>1. Temel: open(), mode ve encoding\u003C/h3>\n\u003Cp>open() fonksiyonu bir dosyayı açar ve bir dosya nesnesi döndürür. En sık kullanılan parametreler:\u003C/p>\n\u003Cul>\n  \u003Cli>\u003Cstrong>file\u003C/strong>: dosya yolu\u003C/li>\n  \u003Cli>\u003Cstrong>mode\u003C/strong>: 'r', 'w', 'a', 'x', 'b', 't', '+' gibi modlar\u003C/li>\n  \u003Cli>\u003Cstrong>encoding\u003C/strong>: metin dosyalarında ör. 'utf-8'\u003C/li>\n\u003C/ul>\n\u003Cp>Örnek (tam içerik okuma):\u003C/p>\n\u003Cp>\u003Cstrong>with open('example.txt', 'r', encoding='utf-8') as f:\u003Cbr>\n    content = f.read()\u003Cbr>\nprint(content)\u003C/strong>\u003C/p>\n\u003Cp>Burada \u003Cstrong>with\u003C/strong> kullandığımız için dosya bloğundan çıkıldığında otomatik olarak kapatılır; bu uygulama resmi dökümantasyonda önerilen kullanımdır (bkz. \u003Ca href=\"https://docs.python.org/tr/3.10/tutorial/inputoutput.html\">Python Girdi/Çıktı\u003C/a>).\u003C/p>\n\n\u003Ch3>2. Modların kısa özeti\u003C/h3>\n\u003Cul>\n  \u003Cli>\u003Cstrong>'r'\u003C/strong>: sadece okuma (dosya yoksa hata verir)\u003C/li>\n  \u003Cli>\u003Cstrong>'w'\u003C/strong>: yazma, var olan dosyayı sıfırlar/truncate eder\u003C/li>\n  \u003Cli>\u003Cstrong>'a'\u003C/strong>: ekleme (append) — yazma işlemi mevcut dosya sonuna ekler\u003C/li>\n  \u003Cli>\u003Cstrong>'x'\u003C/strong>: özel yaratma — dosya varsa hata verir\u003C/li>\n  \u003Cli>\u003Cstrong>'b'\u003C/strong>: binary modu (örn. 'rb', 'wb')\u003C/li>\n  \u003Cli>\u003Cstrong>'+'\u003C/strong>: hem okuma hem yazma (örn. 'r+', 'w+')\u003C/li>\n\u003C/ul>\n\n\u003Ch3>3. with open örnekler (pratik kullanım)\u003C/h3>\n\u003Cp>Satır satır okuma (bellek dostu):\u003C/p>\n\u003Cp>\u003Cstrong>with open('log.txt', 'r', encoding='utf-8') as f:\u003Cbr>\n    for line in f:\u003Cbr>\n        process(line)\u003C/strong>\u003C/p>\n\u003Cp>Tüm dosyayı liste olarak almak:\u003C/p>\n\u003Cp>\u003Cstrong>with open('data.csv', 'r', encoding='utf-8') as f:\u003Cbr>\n    lines = f.readlines()\u003C/strong>\u003C/p>\n\u003Cp>Yazma örneği:\u003C/p>\n\u003Cp>\u003Cstrong>lines = ['satır1\\n', 'satır2\\n']\u003Cbr>\nwith open('out.txt', 'w', encoding='utf-8') as f:\u003Cbr>\n    f.writelines(lines)\u003C/strong>\u003C/p>\n\n\u003Ch3>4. Text vs Binary: read write binary\u003C/h3>\n\u003Cp>Metin dosyaları ('t' varsayılan) ve ikili dosyalar ('b') farklı davranır. Görüntü, ses, arşiv gibi dosyaları binary modda açmak gerekir. Örnek: bir resmi kopyalamak:\u003C/p>\n\u003Cp>\u003Cstrong>with open('image.png', 'rb') as src, open('copy.png', 'wb') as dst:\u003Cbr>\n    while True:\u003Cbr>\n        chunk = src.read(8192)\u003Cbr>\n        if not chunk:\u003Cbr>\n            break\u003Cbr>\n        dst.write(chunk)\u003C/strong>\u003C/p>\n\u003Cp>Alternatif, biraz daha kısa idiom (aynı mantık, sentinel kullanımı):\u003C/p>\n\u003Cp>\u003Cstrong>with open('image.png', 'rb') as src, open('copy.png', 'wb') as dst:\u003Cbr>\n    for chunk in iter(lambda: src.read(8192), b''):\u003Cbr>\n        dst.write(chunk)\u003C/strong>\u003C/p>\n\u003Cp>Her iki yöntemde de dosyalar parça parça okunup yazılır; bu, büyük dosyalar için bellek kullanımını azaltır.\u003C/p>\n\n\u003Ch3>5. Encoding ipuçları\u003C/h3>\n\u003Cp>Metin dosyası açarken \u003Cstrong>encoding\u003C/strong> parametresini belirtmek tutarlılık sağlar. Aksi halde sistemin varsayılan kodlaması kullanılabilir ve platformlar arasında farklılık görülebilir. Eğer dosyada bilinmeyen karakterlerle karşılaşma ihtimali varsa \u003Cstrong>errors\u003C/strong> parametresi (ör. 'replace' veya 'ignore') kullanılabilir. Daha fazla bilgi için \u003Ca href=\"https://docs.python.org/tr/3.10/library/io.html\">io dokümantasyonuna\u003C/a> bakın.\u003C/p>\n\u003Cp>Örnek:\u003C/p>\n\u003Cp>\u003Cstrong>with open('notes.txt', 'r', encoding='utf-8', errors='replace') as f:\u003Cbr>\n    text = f.read()\u003C/strong>\u003C/p>\n\n\u003Ch3>6. Dosya yolu yönetimi: os.path ve pathlib\u003C/h3>\n\u003Cp>Platform bağımsız dosya yolu yönetimi için \u003Cstrong>os.path\u003C/strong> veya modern alternatif olarak \u003Cstrong>pathlib\u003C/strong> kullanmak iyidir. \u003Ca href=\"https://docs.python.org/tr/3/library/os.html\">os modülü\u003C/a> platform farklılıklarını ele almada yardımcı olur.\u003C/p>\n\u003Cp>os.path ile örnek:\u003C/p>\n\u003Cp>\u003Cstrong>import os\u003Cbr>\nbase = '/home/user'\u003Cbr>\npath = os.path.join(base, 'data', 'file.txt')\u003C/strong>\u003C/p>\n\u003Cp>pathlib ile daha okunaklı:\u003C/p>\n\u003Cp>\u003Cstrong>from pathlib import Path\u003Cbr>\np = Path.home() / 'data' / 'file.txt'\u003Cbr>\nwith p.open('r', encoding='utf-8') as f:\u003Cbr>\n    content = f.read()\u003C/strong>\u003C/p>\n\u003Cp>Pathlib, dosya varlığını kontrol etme, dizin oluşturma gibi işlemleri de daha açık API ile sunar.\u003C/p>\n\n\u003Ch3>7. Hatalar, istisnalar ve güvenlik\u003C/h3>\n\u003Cp>Dosya işlemleri I/O hatalarına açıktır: dosya yoksa, izin yoksa veya disk doluysa istisnalar fırlatılabilir. Basit bir örnek:\u003C/p>\n\u003Cp>\u003Cstrong>try:\u003Cbr>\n    with open('config.ini', 'r', encoding='utf-8') as f:\u003Cbr>\n        cfg = f.read()\u003Cbr>\nexcept FileNotFoundError:\u003Cbr>\n    print('Dosya bulunamadı')\u003Cbr>\nexcept PermissionError:\u003Cbr>\n    print('İzin hatası')\u003C/strong>\u003C/p>\n\u003Cp>Ayrıca yazma işlemlerinde dosya izni ve path doğrulaması yapmanız, kullanıcı girişleriyle oluşturulan dosya yollarını mutlaka temizlemeniz önerilir.\u003C/p>\n\n\u003Ch3>8. Performans ve büyük dosyalar\u003C/h3>\n\u003Cul>\n  \u003Cli>Bellek sınırlaması olan ortamlar için dosyayı parça parça okumak en uygunudur (chunking).\u003C/li>\n  \u003Cli>Satır tabanlı işleme gerekiyorsa \u003Ccode>for line in f\u003C/code> yapısı en verimli yöntemlerden biridir.\u003C/li>\n  \u003Cli>Çok sayıda küçük yazma işlemi varsa buffering veya tek seferde birleştirilmiş yazma daha hızlı olabilir.\u003C/li>\n\u003C/ul>\n\n\u003Ch3>9. Kontrol listesi: Dosya işlemi yazmadan önce\u003C/h3>\n\u003Cul>\n  \u003Cli>Doğru \u003Cstrong>mode\u003C/strong> seçildi mi? (r/w/a/x/b)\u003C/li>\n  \u003Cli>Metin dosyaları için \u003Cstrong>encoding\u003C/strong> belirlendi mi?\u003C/li>\n  \u003Cli>Dosya yolu platforma uygun şekilde oluşturuldu mu? (os.path veya pathlib kullan)\u003C/li>\n  \u003Cli>Hatalara karşı try/except yapısı veya hata kaydı eklendi mi?\u003C/li>\n  \u003Cli>Kaynak ve hedef dosyalar için izin kontrolleri yapıldı mı?\u003C/li>\n  \u003Cli>Büyük dosyalar için parça-parça okuma/yazma planlandı mı?\u003C/li>\n\u003C/ul>\n\n\u003Ch3>10. Kısa örnekler — hızlı referans\u003C/h3>\n\u003Cp>Yeni bir dosya oluşturup yazma (varsa üzerine yazar):\u003C/p>\n\u003Cp>\u003Cstrong>with open('notes.txt', 'w', encoding='utf-8') as f:\u003Cbr>\n    f.write('Merhaba dünya\\n')\u003C/strong>\u003C/p>\n\u003Cp>Var olan dosyanın sonuna ekleme:\u003C/p>\n\u003Cp>\u003Cstrong>with open('notes.txt', 'a', encoding='utf-8') as f:\u003Cbr>\n    f.write('Yeni satır\\n')\u003C/strong>\u003C/p>\n\n\u003Chr>\n\u003Cp>Bu rehberde ele alınan temel kavramlar ve örnekler, Python'un resmi belgelerindeki önerilerle uyumludur. Daha ayrıntılı teknik referans için \u003Ca href=\"https://docs.python.org/tr/3.10/tutorial/inputoutput.html\">Python Girdi ve Çıktı\u003C/a>, \u003Ca href=\"https://docs.python.org/tr/3.10/library/io.html\">io kütüphanesi\u003C/a> ve \u003Ca href=\"https://docs.python.org/tr/3/library/os.html\">os modülü\u003C/a> sayfalarına bakabilirsiniz.\u003C/p>","Python ile dosya okuma ve yazma — Pratik örnekler ve kod ipU","Python'da dosya okuma ve yazma işlemlerinin temelleri, 'with open' kullanımı, encoding ipuçları, binary (ikili) okuma/yazma ve dosya yolu yönetimi için pratik, ","python kod snippetleri, with open örnek, encoding ipuçları, read write binary, dosya yolu yönetimi, Python dosya işlemleri","python-ile-dosya-okuma-ve-yazma-pratik-ornekler-ve-kod-ipuclari","2026-04-11T12:57:00.000Z",{"id":16,"title":17,"slug":18},210,"Python Dosya İşlemleri","python-dosya-islemleri",{"id":20,"name":21,"nickname":22,"slug":23},92,"Burak Demirtaş","CodeMentor","burak-demirtas","/media/blog/0d91a90b1cb2da429e5cd906aba157a3.jpg","/media/blog/0d91a90b1cb2da429e5cd906aba157a3_thumb.jpg","/media/blog/0d91a90b1cb2da429e5cd906aba157a3.webp","/media/blog/0d91a90b1cb2da429e5cd906aba157a3_thumb.webp",null,{"minutes":30,"wordCount":31,"imageCount":32,"formatted":33},4,765,0,"4 dk okuma süresi","/blog/python-dosya-islemleri/python-ile-dosya-okuma-ve-yazma-pratik-ornekler-ve-kod-ipuclari",[],["Reactive",37],{"title":7,"subTitle":17,"image":24},["Reactive",39],{"title":10,"meta":40,"link":75},[41,43,45,48,51,54,57,60,63,66,69,71,73],{"hid":42,"name":42,"content":11},"description",{"hid":44,"name":44,"content":12},"keywords",{"hid":46,"name":46,"content":47},"author","Başlangıç Seviyesi Kod & Snippet Rehberi",{"hid":49,"name":49,"content":50},"robots","index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1",{"hid":52,"property":52,"content":53},"og:type","website",{"hid":55,"property":55,"content":56},"og:title","Başlangıç Kod & Snippet Rehberi | KodÖğreniyorum",{"hid":58,"property":58,"content":59},"og:description","Yeni başlayanlara yönelik kısa kod örnekleri, snippet'ler ve adım adım alıştırmalar. Hızlı uygulamalarla temel programlama mantığını pekiştir.",{"hid":61,"property":61,"content":62},"og:image","https://kodogreniyorum.com/media/blog/0d91a90b1cb2da429e5cd906aba157a3.jpg",{"hid":64,"property":64,"content":65},"og:url","https://kodogreniyorum.com/blog/python-dosya-islemleri/python-ile-dosya-okuma-ve-yazma-pratik-ornekler-ve-kod-ipuclari",{"hid":67,"name":67,"content":68},"twitter:card","summary_large_image",{"hid":70,"name":70,"content":56},"twitter:title",{"hid":72,"name":72,"content":59},"twitter:description",{"hid":74,"name":74,"content":62},"twitter:image",[76,78],{"rel":77,"href":65},"canonical",{"rel":79,"href":80},"amphtml","https://amp.kodogreniyorum.com/blog/python-dosya-islemleri/python-ile-dosya-okuma-ve-yazma-pratik-ornekler-ve-kod-ipuclari",["Reactive",82],{"@context":83,"@graph":84},"https://schema.org",[85,98],{"@type":86,"headline":10,"image":62,"author":87,"publisher":90,"datePublished":14,"dateModified":14,"mainEntityOfPage":96,"description":11},"BlogPosting",{"@type":88,"name":21,"url":89},"Person","https://kodogreniyorum.com/yazarlar/burak-demirtas",{"@type":91,"name":47,"logo":92},"Organization",{"@type":93,"url":94,"width":95,"height":95},"ImageObject","https://kodogreniyorum.com/img/icons/favicon.png",32,{"@type":97,"@id":65},"WebPage",{"@type":99,"itemListElement":100},"BreadcrumbList",[101,106,110,113],{"@type":102,"position":103,"name":104,"item":105},"ListItem",1,"Ana Sayfa","https://kodogreniyorum.com",{"@type":102,"position":107,"name":108,"item":109},2,"Blog","https://kodogreniyorum.com/blog",{"@type":102,"position":111,"name":17,"item":112},3,"https://kodogreniyorum.com/blog/python-dosya-islemleri",{"@type":102,"position":30,"name":7,"item":65}]