[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-python-dosya-islemleri-with-encoding-ve-csv-ornekleri":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},24944,"Python dosya işlemleri: with, encoding ve CSV örnekleri","Bu makale, Python'da dosya işlemleri (open(), with), encoding kullanımı ve csv modülü ile okuma/yazma örneklerini pratik kodlarla açıklar.","\u003Ch2>Giriş\u003C/h2>\n\u003Cp>Dosya işlemleri, Python ile gerçek dünya verilerini okumak, kaydetmek ve paylaşmak için temel bir beceridir. Bu rehberde \u003Cstrong>open()\u003C/strong> fonksiyonunun nasıl kullanıldığı, \u003Cstrong>with\u003C/strong> bağlam yöneticisinin (context manager) neden tercih edildiği, \u003Cstrong>encoding\u003C/strong> ile ilgili dikkat edilmesi gerekenler ve Python'un \u003Cstrong>csv\u003C/strong> modülü ile CSV dosyalarını okuma/yazma pratikleri ele alınacaktır. Örnekler adım adım ve üretim ortamına uygulanabilir şekilde hazırlanmıştır.\u003C/p>\n\n\u003Ch2>open() fonksiyonu: Temel kullanımlar\u003C/h2>\n\u003Cp>Python'da bir dosya açmak için temel araç \u003Cstrong>open()\u003C/strong> fonksiyonudur. open() ile dosyayı hangi modda açacağınızı belirtirsiniz: okumak için 'r', yazmak için 'w', ekleme için 'a', ikili mod için 'b' gibi. Metin modunda karakter dizileriyle, ikili modda (binary) ise byte dizileriyle çalışırsınız. Daha fazla bilgi için Python resmi belgelerine bakabilirsiniz: \u003Ca href=\"https://docs.python.org/tr/3/tutorial/inputoutput.html\">Python — Girdi ve Çıktı\u003C/a>.\u003C/p>\n\u003Cp>Örnek: basit dosya okuma\u003C/p>\n\u003Cp>with open('ornek.txt', 'r', encoding='utf-8') as f:\u003Cbr>    icerik = f.read()\u003Cbr>print(icerik)\u003C/p>\n\u003Cp>Bu örnekte \u003Cstrong>open()\u003C/strong> ile dosya okunmak üzere açılıyor ve \u003Cstrong>read()\u003C/strong> ile içerik alınıyor. Encoding parametresi burada karakter dönüşümünü yönetir (aşağıda ayrıntı var).\u003C/p>\n\n\u003Ch2>with ifadesi: kaynak yönetimi ve güvenli kapanış\u003C/h2>\n\u003Cp>Dosyaları açarken \u003Cstrong>with\u003C/strong> ifadesini kullanmak tercih edilir çünkü blok bittiğinde dosya nesnesi otomatik olarak kapatılır. Bu, kaynak sızıntılarını önler ve kodu daha temiz yapar. Python belgeleri de bu yaklaşımı önerir: \u003Ca href=\"https://docs.python.org/tr/3/tutorial/inputoutput.html\">Python giriş/çıkış rehberi\u003C/a>.\u003C/p>\n\u003Cp>Örnek: satır satır okuma\u003C/p>\n\u003Cp>with open('veriler.txt', 'r', encoding='utf-8') as f:\u003Cbr>    for satir in f:\u003Cbr>        print(satir.strip())\u003C/p>\n\u003Cp>Alternatif olarak dosya nesnesini açık bırakmak ve manuel kapatmak mümkündür, ancak hata durumlarında dosyanın kapatılmaması riski vardır. with bunu ortadan kaldırır.\u003C/p>\n\n\u003Ch2>Encoding (karakter kodlaması) nasıl ele alınır?\u003C/h2>\n\u003Cp>Dosyalar metin içeriyorsa hangi karakter kodlaması kullanıldığı önemlidir. open() fonksiyonunun \u003Cstrong>encoding\u003C/strong> parametresi ile dosya için kodlama belirtilebilir. UTF-8 günümüzde yaygın tercih edilen bir kodlamadır; uluslararası karakterlerin doğru okunmasını sağlar.\u003C/p>\n\u003Cp>Örnek: farklı kodlama ile okuma\u003C/p>\n\u003Cp>with open('turkce.txt', 'r', encoding='utf-8') as f:\u003Cbr>    metin = f.read()\u003C/p>\n\u003Cp>Eğer dosyada UTF-8 BOM varsa ve Excel gibi uygulamalarda sorun yaşanıyorsa, bazen 'utf-8-sig' kullanmak BOM'u göz ardı eder ve uyumluluğu artırır. Kodlama uyuşmazlıkları \u003Cem>UnicodeDecodeError\u003C/em> gibi hatalara yol açabilir; bu durumda doğru encoding'i belirlemek veya hatayı yakalamak gerekir.\u003C/p>\n\n\u003Ch2>Binary dosya işlemleri\u003C/h2>\n\u003Cp>İkili dosyalar (ör. resim, PDF, sıkıştırılmış veriler) ile çalışırken dosyayı 'b' moduyla açmalısınız. Bu mod byte verisi döndürür ve herhangi bir karakter kodlaması uygulanmaz.\u003C/p>\n\u003Cp>Örnek: binary dosya yazma\u003C/p>\n\u003Cp>data = b\"\\x89PNG...\"  # örnek byte dizisi\u003Cbr>with open('resim.png', 'wb') as f:\u003Cbr>    f.write(data)\u003C/p>\n\u003Cp>Binary modda \u003Cstrong>read()\u003C/strong> ve \u003Cstrong>write()\u003C/strong> byte nesneleri ile çalışır; text metotlarıyla karıştırılmamalıdır.\u003C/p>\n\n\u003Ch2>CSV dosyaları: csv modülü ile güvenli okuma ve yazma\u003C/h2>\n\u003Cp>CSV (virgülle ayrılmış değerler) dosyalarını işlemek için Python'un standart \u003Cstrong>csv\u003C/strong> modülü uygundur. Modülün işleyişi ve parametreleri için resmi belgeye bakabilirsiniz: \u003Ca href=\"https://docs.python.org/tr/3/library/csv.html\">csv — CSV dosyalarının okunması ve yazılması\u003C/a>.\u003C/p>\n\u003Cp>Önemli ipuçları:\u003C/p>\n\u003Cul>\n  \u003Cli>Yazarken Windows üzerinde ekstra boş satırlar oluşmasını önlemek için dosyayı \u003Cstrong>newline=''\u003C/strong> ile açın.\u003C/li>\n  \u003Cli>Alan adlarıyla çalışmak için \u003Cstrong>DictReader\u003C/strong> ve \u003Cstrong>DictWriter\u003C/strong> kullanışlıdır.\u003C/li>\n  \u003Cli>Excel uyumluluğu için 'utf-8-sig' ile BOM eklemek gerekebilir.\u003C/li>\n\u003C/ul>\n\n\u003Ch3>CSV okuma örneği (reader)\u003C/h3>\n\u003Cp>with open('kisiler.csv', 'r', encoding='utf-8') as f:\u003Cbr>    import csv\u003Cbr>    reader = csv.reader(f)\u003Cbr>    for satir in reader:\u003Cbr>        print(satir)\u003C/p>\n\n\u003Ch3>CSV okuma örneği (DictReader)\u003C/h3>\n\u003Cp>with open('kisiler.csv', 'r', encoding='utf-8') as f:\u003Cbr>    import csv\u003Cbr>    reader = csv.DictReader(f)\u003Cbr>    for satir in reader:\u003Cbr>        print(satir['isim'], satir['email'])\u003C/p>\n\n\u003Ch3>CSV yazma örneği (DictWriter)\u003C/h3>\n\u003Cp>with open('cikti.csv', 'w', encoding='utf-8', newline='') as f:\u003Cbr>    import csv\u003Cbr>    alanlar = ['isim', 'email']\u003Cbr>    writer = csv.DictWriter(f, fieldnames=alanlar)\u003Cbr>    writer.writeheader()\u003Cbr>    writer.writerow({'isim': 'Ayse', 'email': 'ayse@example.com'})\u003C/p>\n\n\u003Ch2>Pratik tarifler (recipes)\u003C/h2>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Hızlı metin dosyası okuma:\u003C/strong> with open('dosya.txt', 'r', encoding='utf-8') as f: content = f.read()\u003C/li>\n  \u003Cli>\u003Cstrong>Satır satır ilerleme:\u003C/strong> for satir in f: do_something(satir.strip())\u003C/li>\n  \u003Cli>\u003Cstrong>Binary dosya kopyalama:\u003C/strong> with open('kaynak.bin','rb') as r, open('hedef.bin','wb') as w: w.write(r.read())\u003C/li>\n  \u003Cli>\u003Cstrong>CSV'yi DataFrame'e aktarma:\u003C/strong> küçük projelerde csv modülü yeterliyken, daha büyük veri işlerken pandas.read_csv tercih edilir (pandas kullanımında newline yok).\u003C/li>\n\u003C/ul>\n\n\u003Ch2>Hata ayıklama ve sık karşılaşılan problemler\u003C/h2>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Encoding hataları:\u003C/strong> UnicodeDecodeError alırsanız dosyanın kodlamasını kontrol edin; gerekirse encoding parametresini değiştirin ('utf-8', 'latin-1', 'utf-8-sig').\u003C/li>\n  \u003Cli>\u003Cstrong>Boş satırlar (CSV):\u003C/strong> Yazarken newline='' kullanmak Windows'ta ekstra boş satır sorununu çözer.\u003C/li>\n  \u003Cli>\u003Cstrong>Dosya yok hatası:\u003C/strong> open() çağrısında FileNotFoundError alınabilir; try/except ile yakalayın veya önce pathlib.Path.exists() ile kontrol edin.\u003C/li>\n\u003C/ul>\n\n\u003Chr>\n\u003Ch2>Kontrol listesi: dosya işlemlerinde dikkat edilmesi gerekenler\u003C/h2>\n\u003Col>\n  \u003Cli>Metin dosyası ise \u003Cstrong>encoding\u003C/strong> belirtin (genelde 'utf-8').\u003C/li>\n  \u003Cli>Kaynağı otomatik kapatmak için \u003Cstrong>with\u003C/strong> kullanın.\u003C/li>\n  \u003Cli>Binary veriler için 'b' modunu kullanın.\u003C/li>\n  \u003Cli>CSV yazarken \u003Cstrong>newline=''\u003C/strong> kullanın ve \u003Cstrong>DictWriter\u003C/strong> tercih edinse alan adlarını tanımlayın.\u003C/li>\n  \u003Cli>Dosya yollarında \u003Cstrong>pathlib\u003C/strong> ile çalışmak platformlar arası uyumluluğu artırır.\u003C/li>\n\u003C/ol>\n\n\u003Ch2>Kaynaklar ve ileri okuma\u003C/h2>\n\u003Cp>Bu rehberin teknik noktaları Python'un resmi belgelerine dayanmaktadır: \u003Ca href=\"https://docs.python.org/tr/3/tutorial/inputoutput.html\">7. Girdi ve Çıktı — Python 3 belgeleri\u003C/a> ve \u003Ca href=\"https://docs.python.org/tr/3/library/csv.html\">csv modülü belgeleri\u003C/a>. Daha fazla uygulama örneği için bu kaynaklar doğrudan başvurulabilir.\u003C/p>\n\n\u003Ch2>Özet\u003C/h2>\n\u003Cp>open(), with ve csv modülü, Python'da dosya işlemlerini güvenli ve okunabilir şekilde gerçekleştirmenize olanak tanır. Encoding'e dikkat etmek, binary/text ayrımını doğru yapmak ve csv yazarken newline parametresini kullanmak en sık yapılan iyi uygulamalardır. Bu makaledeki örnekler temel ihtiyaçları karşılayacak şekilde seçilmiştir; karmaşık veri işleme için ek araçlar (ör. pandas) değerlendirilebilir.\u003C/p>","Python dosya işlemleri: with, encoding ve CSV örnekleri — Pr","Python'da dosya açma, okuma, yazma ve CSV işlemleri için pratik bir rehber. open(), with ifadesi, encoding seçenekleri ve csv modülü ile gerçek örnekleri adım‑a","Python Dosya İşlemleri, open(), with statement, encoding, csv okuma yazma, binary dosya işlemleri","python-dosya-islemleri-with-encoding-ve-csv-ornekleri","2026-04-06T12:50:48.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/9296af12780e93cf6b41f584456c18c5.jpg","/media/blog/9296af12780e93cf6b41f584456c18c5_thumb.jpg","/media/blog/9296af12780e93cf6b41f584456c18c5.webp","/media/blog/9296af12780e93cf6b41f584456c18c5_thumb.webp",null,{"minutes":30,"wordCount":31,"imageCount":32,"formatted":33},5,817,0,"5 dk okuma süresi","/blog/python-dosya-islemleri/python-dosya-islemleri-with-encoding-ve-csv-ornekleri",[],["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/9296af12780e93cf6b41f584456c18c5.jpg",{"hid":64,"property":64,"content":65},"og:url","https://kodogreniyorum.com/blog/python-dosya-islemleri/python-dosya-islemleri-with-encoding-ve-csv-ornekleri",{"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-dosya-islemleri-with-encoding-ve-csv-ornekleri",["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":114,"name":7,"item":65},4]