FileNotFoundError: [Errno 2] No such file or directory:

Aynı dosyayı Spyder uygulamasında hatasız çalıştırırken, Anaconda Prompt içinde çalıştırdığımda hata veriyor. Ana kod içinde

girilen = self.ui.girdi_sifre.text()
if  sifreleme.guvenlik_dosya_yaz(girilen) == 1 :

şeklinde çağırdım fonksiyonu. Fonksiyon kodları:

def sifre_kontrol(supheli,kayitli):
    if supheli == kayitli:
        sonuc = 1
    else:
        sonuc = 0
    return sonuc

def dosya_oku():
    guvenlik_dosyasi_oku = open("guvenlik.txt", "r")
    guvenlik = guvenlik_dosyasi_oku.readline()
    guvenlik_dosyasi_oku.close()
    giris_dosyasi_oku = open("giris_bilgisi.txt", "r")#Bu dosyanın içinde kullanıcının önceden belirlediği şifrenin yine sifrele() fonksiyonuna girmiş hali bulunuyor.
    sifre = giris_dosyasi_oku.readline()
    giris_dosyasi_oku.close()
    return sifre_kontrol(guvenlik,sifre)

def guvenlik_dosya_yaz(girdi_sifre):
    guvenlik_dosyasi = open("guvenlik.txt", "w")
    sifrele(girdi_sifre, guvenlik_dosyasi) #sifrele() fonksiyonunda basit bir algoritmayla girilen şifreyi değiştiriyor (okuyan için anlamsız hale getiriyor diyebilirim) ve parametre olarak alınan dosyaya şifrenin bu yeni halini yazıyor.
    guvenlik_dosyasi.close()
    return dosya_oku()

Anaconda Prompt 'ta giris_dosyasi_oku = open("giris_bilgisi.txt", "r") satırına aldığım hata :

FileNotFoundError: [Errno 2] No such file or directory: 'giris_bilgisi.txt'

Yukarıda ana kod diye bahsettiğim kodlarla guvenlik.txt ve giris_bilgisi.txt dosyaları aynı klasör içinde. Anaconda Prompt’ta bu hatayı alma sebebim ne sizce?

Dosyayı belirtirken tam dizin verin. x.py değil, /home/Emre/x.py gibi.

Dediğinizi bu şekilde denedim ama yine Anaconda Prompt’tan FileNotFoundError: [Errno 2] No such file or directory: hatasını alıyorum.

import os
def dosya_yolu(dosya):# Bu fonksiyonu ekledim.
    dosya_yol = os.getcwd() + dosya
    return dosya_yol

def sifre_kontrol(supheli,kayitli):
    if supheli == kayitli:
        sonuc = 1
    else:
        sonuc = 0
    return sonuc

def dosya_oku():
    guvenlik_dosyasi_oku = open(dosya_yolu("\guvenlik.txt"), "r")#Eklediğim fonksiyona göre dosya yolunu kullandığım satırları güncelledim.
    guvenlik = guvenlik_dosyasi_oku.readline()
    guvenlik_dosyasi_oku.close()
    giris_dosyasi_oku = open(dosya_yolu("\giris_bilgisi.txt"), "r")
    sifre = giris_dosyasi_oku.readline()
    giris_dosyasi_oku.close()
    return sifre_kontrol(guvenlik,sifre)

def guvenlik_dosya_yaz(girdi_sifre):
    guvenlik_dosyasi = open(dosya_yolu("\guvenlik.txt") , "w")
    sifrele(girdi_sifre, guvenlik_dosyasi)
    guvenlik_dosyasi.close()
    return dosya_oku()

Dosya yolu su seklide cikiyor galiba: /home/emre//x.txt. Dizinleri birlestirmek icin os.path.join(path1, path2) kullanin, ya da sadece yolu yazin.

1 Beğeni

def Path(file):
    path=os.getcwd()+"\\"+file
    return path
with open(Path('deneme.txt'),'r+') as file:
    print(file.readlines())

Acma cagrisi esnasindaki CWD’ler nedir? (os.getcwd())

Iki ortam icin de soruyorum.

1 Beğeni

@NoComment Bunu da eklemeyi denedim fakat yine dosya bulunamadı diyor.

Spyder da os.getcwd() ile bulunulan dizini sorgulattığımda çalıştığım klasörü (yani ana kodlarım ve guvenlik.txt, giris_bilgisi.txt dosyalarının bulunduğu klasörü) döndürüyor. Ama aynı şekilde Anaconda Prompt’ta sorguladığımda C:\Users\kullanici_adi dizinini döndürüyor. Sanırım en başta farklı sonuçlar almamın sebebi bu.
@aib Siz de bunu sordunuz sanırım.

Evet. Simdi de “ana kodlarınızın ve guvenlik.txt, giris_bilgisi.txt dosyalarının bulunduğu klasörün” hangisi oldugunu ve C:\Users\kullanici_adi dizininden farkli olup olmadigini sormam gerekiyor.

Evet farklı ve şu şekilde: C:\\Users\\kullanici_adi\\Desktop\\proje_adi
Teşekkür ederim bu farkın sebebini görmüş oldum.

Dostum çözümü çok basit. Read etmekte sorun yaşıyor demek. Sende read dosyasını kes, C klasörüne kopyala.Böyle olduğu zaman rahat bir şekilde okyacaktır. En fazla 3 aşamalı olmalı anlayacağın txt dosyan.Kolay gelsin.

Ha birde sağa tıkla-özellikler-konum kopyala koda dahil etmelisin. Daha kolay bulur.

"3 aşamalı"dan kastınız "C:"den en fazla 3 dizin uzakta olmak mı? Öyleyse neden?

En fazla 3 dizin oluşturmalı. C:\opscurum\enrty.txt gibi

Neden?

İstersen dene, hata verecektir. Hata satırında da da yazacaktır. Read yapmakta vscode özellikle zorlanabiliyor.

Denedim, vermedi. Bir de siz deneyin isterseniz… 8 dizin aşağıya inin, bir dosya oluşturun, sonra Python ile okuyabilirsiniz, bir sorun yok… Varolmayan bir dosyayı okumaya çalışıyorsanız onun da dizin sayısı ile pek alakası yok, onu belirteyim.

with open(‘C:\VSCODE\whatsapp\messages.txt’, ‘r’, encoding=‘UTF-8’) as messages:

messageList=list()

text=messages.read()

messageList=text.split('\n')

Var olmayan bir dizini neden okutalım ki! Size kolay gelsin

Bu kodu çalıştırınca aldığınız hata nedir?

Dostum benim yazdığım çalışan bir kod. Teşekkür ederim.