Python Dosya İşleme: Okuma, Yazma, CSV, JSON ve pathlib Örneklerle
Hemen hemen her gerçek komut dosyası bir dosyayı okur veya yazar. Dosyaları açmanın, doğru modu seçmenin, CSV ve JSON’u işlemenin, pathlib’i kullanarak yollarla çalışmanın ve verilerinizi silen hatalardan kaçınmanın güvenli yolunu öğrenin.
- Dosyaları her zaman
withbloğuyla açın, böylece otomatik olarak kapanırlar. - Mod
"w"mevcut bir dosyayı siler. Birine ekleme yapmak için"a"‘ü veya üzerine yazmayı reddetmek için"x"‘ü kullanın. - Her şeyi belleğe yüklemeden büyük dosyaları okumak için dosya nesnesi üzerinde döngü yapın.
encoding="utf-8"‘i açıkça iletin ve yol oluşturmak içinpathlib‘yi tercih edin.
Günlükler, raporlar, yapılandırma, dışa aktarmalar: er ya da geç her komut dosyası dosya sistemine dokunur. Python dosya işlemenin başlaması kolaydır, ancak kodunuzun güvenilir olup olmadığına veya verileri sessizce yok edip etmeyeceğine karar verecek birkaç ayrıntı vardır.
Bu kılavuz, güvenli alışkanlıklara odaklanarak metin dosyalarını, CSV, JSON’u, ikili verileri ve yolları kapsar. Bu örnekleri Python 3.13’te geçici bir klasörde çalıştırdık ve gösterilen çıktı bu çalıştırmadan geliyor.
Dosyaları open() ve ile açın
Yerleşik open() işlevi bir dosya nesnesi döndürür. Bir with blok içinde kullanın:
with open("notes.txt", "w", encoding="utf-8") as file:
file.write("first line\n")
file.write("second line\n")
print(file.closed)
# True
Blok sona erdiğinde Python, içinde bir hata oluşsa bile dosyayı kapatır. with olmadan, close()‘yi kendiniz aramanız gerekir ve bir istisna bu satırı atlayabilir. Bir dosyayı kapatıldıktan sonra kullanmak bir hataya neden olur:
file.read()
# ValueError: I/O operation on closed file.
Dosya modları
open()‘in ikinci argümanı ne yapmayı planladığınızı söylüyor:
| Mod | Anlamı | Dosya mevcutsa | eğer değilse |
|---|---|---|---|
r |
Okuma (varsayılan) | Onu açar | Hata |
w |
Yaz | Önce onu siler | Onu yaratır |
bir |
Ekle | Sonuna eklenir | Onu yaratır |
x |
Özel yarat | Hata | Onu yaratır |
r+ |
Okuyun ve yazın | Onu açar | Hata |
İkili veriler için "rb" veya "wb"‘te olduğu gibi b ekleyin. Metin varsayılandır ve açıkça t olarak da yazılabilir.
Yaz ve ekle
write() satır sonu eklemez, bu nedenle \n‘yi kendiniz ekleyin. Ekleme zaten orada olanı korur:
with open("notes.txt", "a", encoding="utf-8") as file:
file.write("third line\n")
Bunu, hiçbir uyarı olmadan üç satırımızı bir satırla değiştiren mod "w" ile karşılaştırın:
with open("notes.txt", "w", encoding="utf-8") as file:
file.write("replaced\n")
# notes.txt now contains only: replaced
Bir şeyin üzerine yazmamanız gerektiğinde "x" kullanın. notes.txt zaten mevcut olduğundan testimizde FileExistsError değerini yükseltti.
Bir dosyayı okuma
Okumanın birkaç yolu vardır ve doğru seçim dosyanın boyutuna bağlıdır:
| Yaklaşım | İade | Şunun için en iyisi: |
|---|---|---|
file.read() |
Her şeyi içeren bir dize | Küçük dosyalar |
file.readline() |
Sonraki satır | Bir başlığı okuma |
file.readlines() |
Bir satır listesi | Liste olarak ihtiyacınız olan küçük dosyalar |
dosyadaki satır için |
Her seferinde bir satır | Her boyutta, özellikle büyük dosyalar |
with open("notes.txt", encoding="utf-8") as file:
print(repr(file.read()))
# 'first line\nsecond line\n'
with open("notes.txt", encoding="utf-8") as file:
for line in file:
print(line.strip())
# first line
# second line
# third line
Ham dizede tutulan \n karakterlerine dikkat edin. strip() onları kaldırır. Bir dosya nesnesi aynı zamanda konumunu da hatırlar, böylece okuma kaldığı yerden devam eder:
with open("notes.txt", encoding="utf-8") as file:
print(file.readline().strip())
print(file.readlines())
# first line
# ['second line\n', 'third line\n']
Dosya üzerinde döngü yapmak, büyük günlükler ve dışa aktarmalar için temel tekniktir. Her seferinde bir satır okur, böylece çok gigabaytlık bir dosyanın belleğe sığması gerekmez.
Dosya hatalarını işleme
Dosyalar eksik, kilitli veya okunamaz durumda olabilir; bu nedenle aşağıdakileri planlayın:
try:
with open("missing.txt", encoding="utf-8") as file:
data = file.read()
except FileNotFoundError as error:
print(error)
# [Errno 2] No such file or directory: 'missing.txt'
| İstisna | Tipik neden |
|---|---|
Dosya BulunamadıHatası |
Yol mevcut değil |
DosyaMevcutHata |
Mevcut bir dosyadaki mod x |
İzin Hatası |
İzin verilmiyor veya Windows’ta kilitli |
IsADrectoryError |
Yol bir klasördür |
UnicodeDecodeError |
Yanlış kodlama kullanıldı |
Dosya, kontrol ile açma arasında kaybolabileceğinden, ilk önce exists() ile kontrol etmek yerine dosyayı açmayı ve hatayı yakalamayı deneyin. Python istisna yönetimi kılavuzumuz bu yaklaşımı kapsamaktadır.
CSV dosyaları
Alıntılanan değerler virgül içerebileceğinden CSV satırlarını kendiniz virgülle bölmeyin. Standart csv modülü bu kuralları yönetir. DictWriter ve DictReader en okunabilir seçeneklerdir:
import csv
with open("orders.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=["id", "customer", "total"])
writer.writeheader()
writer.writerow({"id": 1, "customer": "Asha", "total": 1200})
writer.writerow({"id": 2, "customer": "Ben", "total": 300})
with open("orders.csv", newline="", encoding="utf-8") as file:
rows = list(csv.DictReader(file))
print(rows[0])
print(sum(int(r["total"]) for r in rows))
# {'id': '1', 'customer': 'Asha', 'total': '1200'}
# 1500
İki ayrıntı önemlidir. Windows’ta boş satırları önlemek için, belgelerin önerdiği gibi CSV dosyalarını açarken newline=""‘i iletin. Ve her değer bir dize olarak, çift sayılar olarak geri gelir; bu nedenle toplamda int()‘e ihtiyacımız vardı. Yoğun veri işleri için pandalar gibi bir kütüphane daha uygun olabilir.
JSON dosyaları
JSON, yapılandırma ve API verileri için olağan formattır. Python sözlükleriyle düzgün bir şekilde eşleşir ve şunları listeler:
import json
config = {"debug": True, "retries": 3, "hosts": ["a", "b"]}
with open("config.json", "w", encoding="utf-8") as file:
json.dump(config, file, indent=2)
with open("config.json", encoding="utf-8") as file:
print(json.load(file)["retries"])
# 3
Adlandırmayı unutmayın: dump ve load dosyalarla, dumps ve loads ise dizelerle çalışır. Tarih gibi türler doğrudan saklanamaz, bu nedenle önce bunları dizelere dönüştürmeniz gerekir.
Pathlib’i kullanarak yollarla çalışma
Yolların dizelerle birbirine yapıştırılması, işletim sistemlerinde kesintiye neden olur. Standart pathlib modülü ayırıcıları sizin için yönetir ve kullanışlı kısayollar sunar:
from pathlib import Path
path = Path("data") / "reports" / "summary.txt"
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text("all good\n", encoding="utf-8")
print(path.read_text(encoding="utf-8").strip()) # all good
print(path.suffix, path.stem, path.exists()) # .txt summary True
print(sorted(p.name for p in Path(".").glob("*.csv")))
# ['orders.csv']
| Görev | yol kütüphanesi |
|---|---|
| Yolları birleştir | Yol("a") / "b.txt" |
| Klasörler oluştur | path.mkdir(ebeveynler=Doğru, mevcut_ok=Doğru) |
| Metnin tamamını okuyun veya yazın | read_text(), write_text() |
| Dosyaları bul | glob("*.csv"), rglob("*.py") |
| Bir dosyayı silme | path.unlink() |
| Geçerli betiğin klasörünü al | Path(__file__).parent |
Sonuncusu yaygın bir baş ağrısını çözer. Göreli yollar, betiğin bulunduğu yerden değil, betiği çalıştırdığınız yerden çözümlenir; bu nedenle, Path(__file__).parent‘den yol oluşturmak birçok “dosya bulunamadı” sürprizini önler.
İkili dosyalar
Resimler, PDF’ler ve ZIP dosyaları metin değildir. Bunları b ile açın ve hiçbir kodlama olmadan bytes okuyup yazarsınız:
with open("pixel.bin", "wb") as file:
file.write(bytes([255, 0, 128]))
with open("pixel.bin", "rb") as file:
print(file.read())
# b'\xff\x00\x80'
Daha güvenli yazar
Bir program önemli bir dosyayı yazmanın yarısında çökerse, bozuk bir sonuçla karşı karşıya kalabilirsiniz. Yaygın olarak uygulanan bir düzeltme, önce geçici bir dosyaya yazıp ardından dosyayı yerine koymaktır:
temp = Path("settings.tmp")
temp.write_text("new", encoding="utf-8")
temp.replace("settings.txt")
print(Path("settings.txt").read_text(), temp.exists())
# new False
replace() hedefin üzerine yazar. Aynı dosya sisteminde yeniden adlandırma genellikle atomiktir, bu nedenle okuyucular yarım yazılmış bir karışım yerine eski dosyayı veya yeni dosyayı görür.
İpucu: Dosya yollarını asla kontrol etmeden doğrudan kullanıcı girişinden oluşturmayın. ../../secrets.txt gibi bir değer, istediğiniz klasörün dışındaki dosyalara ulaşabilir. Bu, yol geçiş güvenlik açığı olarak bilinir.
Pratik bir örnek: bir günlüğü özetleme
Bu kısa senaryo birkaç fikri bir araya getiriyor. Günlüğü her seferinde bir satır okur, dolayısıyla boyutu önemli değildir, her düzeyi Counter kullanarak sayar ve yeni bir dosyaya bir özet yazar:
from collections import Counter
counts = Counter()
with open("app.log", encoding="utf-8") as file:
for line in file:
counts[line.split()[0]] += 1
with open("summary.txt", "w", encoding="utf-8") as out:
for level, total in counts.most_common():
out.write(f"{level}: {total}\n")
# summary.txt
# ERROR: 2
# INFO: 2
# WARN: 1
Örnek günlüğümüzün beş satırı vardı. Boş bir satır line.split()[0]‘i böler, bu nedenle gerçek komut dosyaları önce boş satırları atlamalıdır.
Yaygın hatalar
"a"‘ü kastederken"w"‘yi kullanmak. Hiçbir şey yazmasanız bile mevcut verileriniz anında açılır.- Kodlamanın atlanması. Varsayılan, sisteme göre değişir; dolayısıyla Linux’ta çalışan bir komut dosyası, Windows’ta vurgulu metin veya emoji ile başarısız olabilir.
- Büyük dosyalarda
read()‘yi çağırmak. Bu, belleği tüketebilir, bu nedenle bunun yerine satırlar üzerinden döngü yapın. - CSV değerlerinde
int()‘yi unutmak."10" + "20","1020"değerini verir. - CSV için
newline=""‘yi dışarıda bırakıyoruz. Windows’ta beklenmedik boş satırlarla karşılaşabilirsiniz. - Dosya kodu test edilmiyor. Testlerin hiçbir zaman gerçek dosyalara dokunmaması için pytest’in
tmp_pathfikstürünü kullanın. pytest eğitimimize bakın.
Son sözler
Birkaç alışkanlık burada hemen hemen her şeyi kapsıyor: with‘i kullanın, kodlamayı ayarlayın, "w" hakkında iki kez düşünün ve zor kısımları csv, json ve pathlib‘in yapmasına izin verin. Alıştırma yapmak için CSV okuyan, bir sütunu toplayan ve JSON özetini yeni bir klasöre kaydeden küçük bir komut dosyası yazın.
Sık sorulan sorular
Python’da bir dosyayı satır satır nasıl okurum?
Bunu bir with bloğunda açın ve dosya nesnesi üzerinde döngü yapın. Bu, her seferinde bir satır okur, bu nedenle çok büyük dosyalarda bile iyi çalışır.
W ve a modu arasındaki fark nedir?
W modu, dosya açılır açılmaz mevcut içeriği siler. Mod a, mevcut içeriği korur ve dosyanın sonuna yeni veriler ekler.
Bir dosyayı açmak için neden with kullanmalıyım?
with ifadesi, blok sona erdiğinde, bir hata oluşsa bile dosyayı otomatik olarak kapatır. Bu, sızıntıları önler ve verilerin yazıldığından emin olunmasına yardımcı olur.
Python’da bir dosyanın olup olmadığını nasıl kontrol ederim?
Pathlib’deki Path(“name.txt”).exists() işlevini kullanın. Hemen sonra açmayı planlıyorsanız, FileNotFoundError’ı yakalamak genellikle ilk önce kontrol etmekten daha güvenilirdir.
Windows’ta CSV’mde neden boş satırlar var?
Muhtemelen dosyayı newline=”” olmadan açtınız. Csv modülü satır sonlarını kendisi yönetir, bu nedenle fazladan boş satırlardan kaçınmak için bu argümanı iletin.
Öğrenmeye devam et
Test, WordPress veya SEO konusunda yardıma mı ihtiyacınız var?
Ekiplerin daha iyi yazılımlar sunmasına ve sitelerini büyütmesine yardımcı oluyoruz. Bize ne üzerinde çalıştığınızı söyleyin, biz de bir sonraki adım için net bir öneride bulunalım.
Daha fazla kılavuz test, yapay zeka ve modern geliştirme
Bu makaleyi beğendiniz mi? Bir konu seçin ve doğrudan en yeni eğitimlerimize geçin.
Yapay Zeka Halüsinasyonları Açıklandı: Dil Modelleri Neden İşleri Düzeltiyor ve Nasıl Azaltılabilir?
Yapay zeka halüsinasyonları açıkladı: ne olduklarını, dil modellerinin bunları neden ürettiğini, yaygın türlerini, temellendirme ve yönlendirmelerle…
Makaleyi okuyun →DevOpsAçıklanan Ortam Değişkenleri: .env Dosyaları, Sırlar ve Yapılandırma Doğru Yapıldı
Çalıştırdığımız Python örnekleriyle açıklanan ortam değişkenleri: bunları okumak ve ayarlamak, neden her değerin bir dize olduğu, .env dosyaları, sü…
Makaleyi okuyun →Yazılım geliştirmeAPI Hız Sınırlamasının Açıklaması: Algoritmalar, Başlıklar ve 429 Hatalarının Ele Alınması
API hızı sınırlaması, çalıştırdığımız bir simülasyonla açıklanmıştır: belirteç kümesi, sabit pencere, kayan pencere, 429 yanıt, hız sınırı başlıklar…
Makaleyi okuyun →Test otomasyonuPython'da alay etme: Unittest.mock, patch ve Testleri Yalan Yapan Hatalar
Unittest.mock ile Python'da alay etme, test edildi: Sahte ve dönüş_değeri, yan_etki, bir adın kullanıldığı yerde yama uygulama, spesifikasyon ve oto…
Makaleyi okuyun →Yazılım testiKod Kapsamının Açıklaması: Hat ve Şube Kapsamı ve %100'ün Gerçek Anlamı
Kod kapsamı gerçek bir kapsama.py çalışmasıyla açıklanmıştır: hat, şube ve durum kapsamı, bir raporun okunması, %100 kapsamın neden hâlâ hataları ka…
Makaleyi okuyun →Veritabanları ve SQLSQL'de DELETE vs TRUNCATE vs DROP: Farklılıklar, Geri Alma ve Her Biri Ne Zaman Kullanılmalı
DELETE vs TRUNCATE vs DROP test edilmiş SQL ile açıklandı: her birinin neyi kaldırdığı, geri aldığı, tetiklediği, kimlik sıfırlaması, hızı ve Postgr…
Makaleyi okuyun →Veritabanları ve SQLAçıklanan SQL Görünümleri: Örneklerle Tuzakları Oluşturun, Kullanın ve Önleyin
Çalıştırdığımız sorgularla açıklanan SQL görünümleri: görünüm oluşturma, canlı sonuçlar, sütunları gizleme, performans, güncellenebilir ve gerçekleş…
Makaleyi okuyun →Yazılım geliştirmeTypeScript Arayüzü ve Tür: Gerçek Farklılıklar, Derleyiciyle Test Edildi
TypeScript arayüzü ve türü, gerçek derleyiciyle kontrol edildi: her ikisinin de yapabileceği, yalnızca birinin yapabileceği, bildirim birleştirme, g…
Makaleyi okuyun →Yazılım geliştirmePython *args ve **kwargs'ın Açıklaması: Açık Örneklerle Esnek Fonksiyonlar
Python *args ve **kwargs çalıştırdığımız kodla açıklanmıştır: paketleme ve paketten çıkarma, parametre sırası, yalnızca anahtar kelime ve yalnızca k…
Makaleyi okuyun →Yazılım geliştirmePython Lambda İşlevleri: Söz Dizimi, Gerçek Kullanımlar ve Ne Zaman Kullanılmaması Gerektiği
Çalıştırdığımız kodla açıklanan Python lambda işlevleri: sözdizimi, anahtarla sıralama, harita ve filtre, kapatmalar, geç bağlama tuzağı ve normal b…
Makaleyi okuyun →Yapay zekâYapay Zeka Ajanları Nelerdir? Çalıştırabileceğiniz Basit Bir Aracı Döngüsüyle Nasıl Çalışırlar?
Yapay zeka ajanları nedir? Aracı döngüsüne, araçlara, belleğe ve korkuluklara ilişkin basit bir kılavuz, çalıştırdığımız küçük bir Python döngüsü, g…
Makaleyi okuyun →DevOpsİzleme ve Gözlemlenebilirlik: Günlükler, Metrikler ve İzlerle Gerçek Fark
İzleme ve gözlemlenebilirliğin açıklanması: bilinen ve bilinmeyen arızalar, günlükler, ölçümler ve izler, ödeme olayının gözden geçirilmesi, altın s…
Makaleyi okuyun →DevOpsDocker Birimleri ve Bağlama Bağlantıları: Konteyner Verilerini Doğru Şekilde Kalıcılaştırın
Docker birimleri ile bağlama bağlamaları arasındaki karşılaştırma açıklandı: kapsayıcı verilerinin neden kaybolduğu, adlandırılmış birimler, bağlama…
Makaleyi okuyun →Test otomasyonuTDD ve BDD: Temel Farklılıklar, Her İki Şekilde Geliştirilmiş Bir Özellik ve Her Birinin Ne Zaman Kullanılacağı
TDD ve BDD, her iki yönde de oluşturulmuş bir indirim özelliğiyle açıklandı: çalıştırdığımız kodla kırmızı-yeşil-refactor, Verilen-Ne Zaman-O Zaman …
Makaleyi okuyun →Yazılım testiKullanıcı Kabul Testi (UAT): Süreç, Kontrol Listesi ve Gerçek Örnekler
Kullanıcı kabul testi açıklandı: bunu kimin yürüttüğü, QA'dan farkı, yedi adımlı bir süreç, bir UAT test senaryosu şablonu, bir kontrol listesi, otu…
Makaleyi okuyun →Veritabanları ve SQLAçıklanan SQL NULL Değerleri: IS NULL, COALESCE, NULLIF ve Kaçınılması Gereken Tuzaklar
SQL NULL değerleri, çalıştırdığımız sorgularla açıklandı: üç değerli mantık, IS NULL, COALESCE, NULLIF, toplamaların, birleştirmelerin ve sıralamanı…
Makaleyi okuyun →Veritabanları ve SQLSQL CASE WHEN İfadesi: Sözdizimi, Gerçek Örnekler ve Yaygın Hatalar
SQL CASE WHEN çalıştırdığımız sorgularla açıkladı: basit ve aranmış formlar, koşul sırası, SUM'lu pivotlar, COUNT hileleri, özel sıralama, güncellem…
Makaleyi okuyun →Yazılım geliştirmeJWT Nedir? JSON Web Belirteçleri Bir Çalışma Örneğiyle Açıklanıyor
JWT nedir? JSON Web Tokens açıkladı: üç bölüm, çalıştırdığımız kodda oluşturulan ve üzerinde değişiklik yapılan bir token, JWT ile oturumlar, depola…
Makaleyi okuyun →Yazılım geliştirmeJavaScript Olay Döngüsü Açıklaması: Örneklerle Çağrı Yığını, Mikro Görevler ve Zamanlayıcılar
JavaScript olay döngüsü çalıştırdığımız kodla açıklandı: çağrı yığını, görev ve mikro görev kuyrukları, setTimeout 0'ın neden anında olmadığı, engel…
Makaleyi okuyun →Yazılım geliştirmePython Jeneratörleri ve Verim Açıklaması: Gerçek Örneklerle Bellekten Tasarruf Edin
Python üreteçleri ve verim, çalıştırdığımız kodla açıklandı: nasıl duraklatılır ve devam ettirilir, ölçülen bellek tasarrufları, işlem hatları, sons…
Makaleyi okuyun →Yapay zekâGömmeler Nelerdir? Vektörler ve Kosinüs Benzerliği Basitçe Açıklandı
Gömmeler nedir? Vektörler, kosinüs benzerliği ve anlamsal aramaya ilişkin sade dilli bir kılavuz; çalıştırdığımız küçük bir örnek, yaygın kullanımla…
Makaleyi okuyun →DevOpsMavi-Yeşil ve Kanarya Konuşlandırılması: Farklılıklar, Takaslar ve Nasıl Seçilir
Mavi-yeşil ve kanarya konuşlandırması açıklandı: her birinin nasıl çalıştığı, maliyet, risk ve geri alma, test ettiğimiz istikrarlı kullanıcı grubu,…
Makaleyi okuyun →Test otomasyonuKesintili Testler: Bunların Sebepleri ve Nasıl Düzeltileceği
Yaptığımız demolarla açıklanan hatalı testler: ana nedenler, birinin nasıl doğrulanacağı ve teşhis edileceği, zamanlama için uygun düzeltmeler, payl…
Makaleyi okuyun →Yazılım testiYük Testi ve Stres Testi: Farklılıklar, Metrikler ve k6 Örnekleri
Yük testi ve stres testinin açıklaması: her birinin neyi kanıtladığı, ani yükselme ve soğuma testleri, önemli ölçümler, ortalamaların neden yanıltıc…
Makaleyi okuyun →Yazılım testiTest Senaryosu ve Test Senaryosu: Temel Farklılıklar, Örnekler ve Her Biri Ne Zaman Kullanılmalı?
Test senaryosu ve test senaryosunun açıklaması: net tanımlar, yan yana tablo, senaryolardan vakalara, şablonlara ve her birinin ne zaman kullanılaca…
Makaleyi okuyun →Veritabanları ve SQLSQL Sorgu Optimizasyonu: Zamanlamalarla Yürütme Planlarını Okuyun ve Yavaş Sorguları Düzeltin
SQL sorgu optimizasyonu bir milyon satırda test edilmiştir: yürütme planlarını okuyun, doğru dizinleri ekleyin, değiştirilemeyen filtreleri düzeltin…
Makaleyi okuyun →Veritabanları ve SQLSQL UNION ve UNION ALL: Farklılıklar, Örnekler ve Test Edilmiş Performans
SQL UNION ve UNION ALL, yürüttüğümüz sorgularla açıklandı: kopyalar, her ikisinin de takip ettiği kurallar, gerçek bir veri hatası, ölçülen performa…
Makaleyi okuyun →Yazılım geliştirmeJavaScript Fetch API Eğitimi: GET, POST, Hata İşleme ve Zaman Aşımları
Yerel bir sunucuya karşı test edilen bir JavaScript Fetch API öğreticisi: GET ve POST, 404'ün neden atmadığı, yeniden kullanılabilir bir yardımcı, s…
Makaleyi okuyun →Yazılım geliştirmePython Dosya İşleme: Örneklerle Okuma, Yazma, CSV, JSON ve pathlib
Python dosya işleme, çalıştırdığımız kodla açıklanmıştır: açık modlar, büyük dosyaları okuma, CSV, JSON, pathlib, ikili dosyalar, güvenli yazma, hat…
Makaleyi okuyun →Yazılım geliştirmeGit merge vs rebase: farklar, örnekler ve hangisi ne zaman kullanılır
Git merge vs rebase; gerçek log çıktısı, karşılaştırma tablosu, rebase'in altın kuralı ve güvenli bir ekip iş akışıyla anlatılıyor.
Makaleyi okuyun →Yazılım geliştirmePython Liste Üreteci (List Comprehension): Sözdizimi, Örnekler ve Kaçınılacak Durumlar
Python list comprehension anlatımı: sözdizimi, filtreleme, if-else, iç içe döngüler, ölçülmüş süreler ve düz for döngüsünün daha iyi olduğu durumlar.
Makaleyi okuyun →Veritabanları ve SQLSQL JOIN Örneklerle Açıklama (Inner, Left, Right, Full)
SQL JOIN'leri örnek tablolar ve sorgularla adım adım öğrenin: INNER, LEFT, RIGHT, FULL, CROSS ve SELF; yaygın hatalar ve performans ipuçları.
Makaleyi okuyun →