Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

Python "FileNotFoundError: [Errno 2] No such file or directory" Hatası Nasıl Çözülür?

python-filenotfounderror-errno-2-no-such-file-or-directory-hatasi-nasil-cozulur
Bu yazıda neler var?
  1. FileNotFoundError neden oluşur ve Python dosyayı nerede arar?
  2. Dosya yolunu hangi sırayla kontrol etmelisin?
  3. Farklı çalışma dizinlerinde dosya yolu nasıl doğru kurulur?
  4. try-except ile dosya bulunamadığında nasıl açıklayıcı bilgi verirsin?

Python FileNotFoundError: [Errno 2] No such file or directory hatasını çözmek için dosya yolunu, çalışma dizinini ve diskteki gerçek dosya adını birlikte kontrol etmelisin. Çözüm, Python’ın hangi konumu hedeflediğini görünür kılıp bu konumu dosyanın gerçek adıyla eşleştirmek ve gerekiyorsa göreli yolu düzeltmektir.

Dosya açma işlemi yine başarısız olursa yolu pathlib.Path ile test edebilir ve sorunu açıklayan bir hata mesajı üretebilirsin. Buradaki temel nokta, dosyanın her zaman Python betiğinin bulunduğu klasörde aranmadığını bilmektir.

FileNotFoundError neden oluşur ve Python dosyayı nerede arar?

FileNotFoundError neden oluşur ve Python dosyayı nerede arar?

Bu hata, Python’ın açmaya veya okumaya çalıştığı konumda istediği dosyayı bulamadığını gösterir. Dosya adı yanlış yazılmış olabilir, uzantı eksik olabilir ya da verilen yol farklı bir klasörü gösteriyor olabilir. Özellikle open() içinde yalnızca "veri.txt" gibi bir ad kullanıldığında Python bu göreli yolu çalışma dizinine göre yorumlar.

Çalışma dizini, programın başlatıldığı konumdur. Terminal veya geliştirme ortamı farklı bir çalışma dizini belirleyebileceği için dosya otomatik olarak betiğin bulunduğu klasörde aranmaz. Python’ın hangi klasörü kullandığını görmek için os.getcwd() veya Path.cwd() yöntemlerinden yararlanabilirsin:

from pathlib import Path
import os

print("os.getcwd():", os.getcwd())
print("Path.cwd():", Path.cwd())

Beklenen çıktı, aynı çalışma dizinini gösteren iki satırdır. Gösterilen konum, dosya yolunun başlangıç noktası olarak kullanılır.

Örneğin proje/app.py dosyasından data/girdi.txt dosyasını açtığını düşün. Çalışma dizini proje ise Python proje/data/girdi.txt konumunu arar. Ancak bir üst klasörden python proje/app.py komutuyla çalıştırırsan aynı göreli yol, bir üst klasördeki data klasörünü gösterir. Bu nedenle dosya betiğin yanında bulunsa bile göreli yol beklediğin konuma ulaşmayabilir.

Python temellerine yeni başlıyorsan ücretsiz Sıfırdan Temel Python video eğitimi temel kavramları çalışmak için başlangıç noktası olabilir. Dosya yolu hatasını çözerken ise asıl incelemen gereken üç bilgi, gerçek dosya adı, verilen yol ve çalışma dizinidir.

Dosya yolunu hangi sırayla kontrol etmelisin?

Hatanın kaynağını daha hızlı bulmak için kontrolleri aşağıdaki sırayla yapabilirsin:

  1. Dosya adını ve uzantısını doğrula. Kodda yazan ad ile klasördeki gerçek ad aynı olmalıdır. .txt, .csv veya başka bir uzantının eksik olmadığını kontrol et. Büyük-küçük harf farkını da incele.
  2. Çalışma dizinini yazdır. Path.cwd() veya os.getcwd() çıktısı, göreli yolun hangi klasörden başladığını gösterir.
  3. Göreli ve mutlak yolu karşılaştır. data/girdi.txt gibi göreli yol, çalışma dizinine bağlıdır. Mutlak yol ise dosyanın tam konumunu belirtir. Bu nedenle göreli yol farklı çalıştırma konumlarında farklı sonuç verebilir.
  4. Dosya ile klasörü ayrı ayrı test et. Bir Path nesnesi oluşturduktan sonra path.exists() ile yolun varlığını, path.is_file() ile hedefin gerçekten dosya olup olmadığını kontrol et. Gerekirse path.parent.exists() ile üst klasörün varlığını da incele.
  5. Açıklayıcı hata mesajı üret. Sorun devam ederse hata mesajında denenen yolu ve dosya adını göster. Böylece yalnızca “dosya bulunamadı” demek yerine Python’ın hangi konumu aradığını görebilirsin.

open(), dosyayı doğrudan açmak için kullanılan işlevdir. pathlib.Path ise yolu daha okunabilir biçimde oluşturup kontrol etmeyi sağlar. Başlangıç düzeyinde önce Path ile yolu oluşturmak, ardından exists() ve is_file() kontrollerini yapmak, son aşamada open() kullanmak sorunun kaynağını ayırmayı kolaylaştırır.

Farklı çalışma dizinlerinde dosya yolu nasıl doğru kurulur?

Farklı çalışma dizinlerinde dosya yolu nasıl doğru kurulur?

Şöyle bir klasör yapısı düşün: Betik proje/uygulama.py konumunda, içeriği Merhaba, Python! olan dosya ise proje/veri/notlar.txt konumunda. open("notlar.txt") bu örnekte doğru yolu göstermez. Çünkü göreli yol, betiğin bulunduğu klasöre değil, programın çalışma dizinine göre yorumlanır.

Terminalde proje klasöründeyken python uygulama.py komutunu çalıştırırsan open("notlar.txt"), proje/notlar.txt dosyasını arar. Projenin üst klasöründeyken python proje/uygulama.py komutunu çalıştırırsan bu kez üst klasörde notlar.txt arar. Gerçek dosya iki konumda da veri klasöründedir.

Dosyanın yeri betiğe göre sabitse yolu uygulama.py üzerinden kurabilirsin:

from pathlib import Path

dosya = Path(__file__).resolve().parent / "veri" / "notlar.txt"
print(dosya.read_text(encoding="utf-8"))

Beklenen çıktı: Merhaba, Python! Burada __file__ betik dosyasını, parent onun bulunduğu klasörü temel alır. Bu nedenle örnek, belirtilen iki farklı çalışma dizininden başlatıldığında da aynı dosya yolunu kurar. __file__ yaklaşımı, bir betik dosyasına göre konumlandırılmış veriler için uygundur; yolu özellikle çalışma dizinine göre seçmen gerekiyorsa bu temeli kullanma.

Bu ayrımı farklı klasör yapılarıyla denemek, dosya yolu pratiğini güçlendirebilir. birebir Python Özel Ders programında kişiye özel ödevlerle bu tür alıştırmalar üzerinde çalışılabilir.

try-except ile dosya bulunamadığında nasıl açıklayıcı bilgi verirsin?

Dosya bulunamadığında yalnızca FileNotFoundError hatasını yakala. Aşağıdaki örnek, aranan dosyanın adını, kullanılan yolu ve programın çalışma dizinini gösterir. Dosya okunması zorunluysa açıklamadan sonra raise ile hatayı yeniden yükseltir; böylece sorun sessizce geçiştirilmez.

from pathlib import Path

dosya = Path(__file__).resolve().parent / "veri" / "notlar.txt"

try:
    print(dosya.read_text(encoding="utf-8"))
except FileNotFoundError:
    print(f"Dosya bulunamadı: {dosya.name}")
    print(f"Kullanılan yol: {dosya}")
    print(f"Çalışma dizini: {Path.cwd()}")
    raise

Dosya varsa: Çıktı Merhaba, Python! olur. Dosya eksikse: İlk açıklama satırı Dosya bulunamadı: notlar.txt olur; ardından kullanılan mutlak yol ve çalışma dizini görünür. Sonrasında Python hata izini gösterir.

Yol doğru görünmesine rağmen hata sürüyorsa veri klasörünün gerçekten uygulama.py ile aynı proje klasöründe olup olmadığını denetle. Dosyanın adını ve .txt uzantısını da klasörde görünen gerçek adla karşılaştır.

Dosya yolunu hangi klasöre göre kurduğunu bilmek ve hata anında aranan konumu görmek, sorunu adım adım incelemeni kolaylaştırır.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara