Python kodundaki hata nedir?

alpersamur3

Hectopat
Katılım
10 Mayıs 2020
Mesajlar
156
Python:
        print('E-Posta adresi giriniz.')
        Eposta=input("")  
        print('Kullanıcı Adı belirleyin.')
        kullanıcıadı=input("")
        print('Lütfen Şifre giriniz.')
        şifre=input("")
        kod=open("KOD.txt","r+")
        kod.write("")
        sayı=kod.read()
        print(sayı)
        intsayı=int(sayı)
        eksibir=intsayı-1
        stryenisayı=str(eksibir)
        print('Bu kodu kaybetmeyeceğiniz bir yerde saklayınız!!')
        klncblglr=open("kullanıcıbilgileri.txt","w")
        klncblglr.write('\n')
        klncblglr.write(Eposta+' ')
        klncblglr.write(kullanıcıadı+' ')
        klncblglr.write(şifre)
        kod.write('\n'+stryenisayı)
        kod.close
        klncblglr.close()
Burada program hatasız çalışıyor ama "KOD.txt" dosyasına yeni sayıyı yazmıyor bunun nedeni nedir ??
 
Son düzenleyen: Moderatör:
İki dosya mı temizlenecek, kod dosyası mı?
Şimdi program dosyadan bir sayı okuyup 1 eksiğini dosyaya yazıyor ya bir daha çalıştırdığımda o dosyaya yazılan sayının 1 eksiğini okumasını nasıl sağlarım her seferinde
Şimdi program dosyadan bir sayı okuyup 1 eksiğini dosyaya yazıyor ya bir daha çalıştırdığımda o dosyaya yazılan sayının 1 eksiğini okumasını nasıl sağlarım her seferinde
Örnek verecek olursak mesela kod dosyasında 9 yazıyor diyelim program dosyadan 9 u okudu bir eksiğini aldı .Yani 8.Bu sayıyı kod dosyasının alt satırına yazdı.Ondan sonra program bitti.Bidaha çalıştırdığımda bu sefer alt satıra yazdığı 8 sayısını okumasını nasıl sağlarım ??
 
Python:
# Kullanıcı Bilgileri
ePosta = input('E-Posta adresi giriniz: ')
kullaniciAdi = input('Kullanici Adi belirleyin: ')
sifre = input('Lutfen Sifre giriniz: ')

# Kod dosyasını aç
kodDosyasi = open("kodDosyasi.txt", "r+")

# strolarak oku, int'e dönüştür ve işle, tekrar str'a dönüştür
sayıStr=kodDosyasi.read()

sayıInt = int(sayıStr)
yeniSayı = str(sayıInt-1)

# Dosyaya alt alta yaz.
print('Bu kodu kaybetmeyeceğiniz bir yerde saklayınız!')
kullaniciBilgileri = open("kullaniciBilgileri.txt", "w")
kullaniciBilgileri.write(ePosta + '\n' + kullaniciAdi + '\n' + sifre + '\n' + yeniSayı)

kodDosyasi.truncate(0)
kodDosyasi.write(yeniSayı)

# Dosyaları kapat
kullaniciBilgileri.close()
kodDosyasi.close()


******************

Bu ise dosyayı r olarak açıp, okumayı yaptıktan sonra kapatıyor. Sonrasında kod dosyasını w modunda açıyor, bu sayede dosya sıfırlanıyor.

Üstteki kod da temizleme işlemi yapıyor ama nedense boşluk bırakıyor yazarken. Sorun oluyor o nedenle.

Python:
# Kullanıcı Bilgileri
ePosta = input('E-Posta adresi giriniz: ')
kullaniciAdi = input('Kullanici Adi belirleyin: ')
sifre = input('Lutfen Sifre giriniz: ')

# Kod dosyasını aç
kodDosyasi = open("kodDosyasi.txt", "r")

# strolarak oku, int'e dönüştür ve işle, tekrar str'a dönüştür
sayıStr=kodDosyasi.read()

print(sayıStr)

sayıInt = int(sayıStr)
yeniSayı = str(sayıInt-1)

kodDosyasi.close()

# Dosyaya alt alta yaz.
print('Bu kodu kaybetmeyeceğiniz bir yerde saklayınız!')
kullaniciBilgileri = open("kullaniciBilgileri.txt", "w")
kullaniciBilgileri.write(ePosta + '\n' + kullaniciAdi + '\n' + sifre + '\n' + yeniSayı)

kodDosyasi = open("kodDosyasi.txt", "w")
kodDosyasi.write(yeniSayı)


# Dosyaları kapat
kullaniciBilgileri.close()
kodDosyasi.close()

Bu arada bunu ne için ve hangi amaçla yapıyorsun bilkmiyorum. Ama bilgilerin yazılı olacağı dosyaya, farklı isimler verirsen daha iyi olur. Mesela dosya ismini kullanıcı adı yapabilirsin. Bu sayede her defasında farklı dosya oluşturur.
 
Son düzenleme:
Python:
# Kullanıcı Bilgileri
ePosta = input('E-Posta adresi giriniz: ')
kullaniciAdi = input('Kullanici Adi belirleyin: ')
sifre = input('Lutfen Sifre giriniz: ')

# Kod dosyasını aç
kodDosyasi = open("kodDosyasi.txt", "r+")

# strolarak oku, int'e dönüştür ve işle, tekrar str'a dönüştür
sayıStr=kodDosyasi.read()

sayıInt = int(sayıStr)
yeniSayı = str(sayıInt-1)

# Dosyaya alt alta yaz.
print('Bu kodu kaybetmeyeceğiniz bir yerde saklayınız!')
kullaniciBilgileri = open("kullaniciBilgileri.txt", "w")
kullaniciBilgileri.write(ePosta + '\n' + kullaniciAdi + '\n' + sifre + '\n' + yeniSayı)

kodDosyasi.truncate(0)
kodDosyasi.write(yeniSayı)

# Dosyaları kapat
kullaniciBilgileri.close()
kodDosyasi.close()


******************

Bu ise dosyayı r olarak açıp, okumayı yaptıktan sonra kapatıyor. Sonrasında kod dosyasını w modunda açıyor, bu sayede dosya sıfırlanıyor.

Üstteki kod da temizleme işlemi yapıyor ama nedense boşluk bırakıyor yazarken. Sorun oluyor o nedenle.

Python:
# Kullanıcı Bilgileri
ePosta = input('E-Posta adresi giriniz: ')
kullaniciAdi = input('Kullanici Adi belirleyin: ')
sifre = input('Lutfen Sifre giriniz: ')

# Kod dosyasını aç
kodDosyasi = open("kodDosyasi.txt", "r")

# strolarak oku, int'e dönüştür ve işle, tekrar str'a dönüştür
sayıStr=kodDosyasi.read()

print(sayıStr)

sayıInt = int(sayıStr)
yeniSayı = str(sayıInt-1)

kodDosyasi.close()

# Dosyaya alt alta yaz.
print('Bu kodu kaybetmeyeceğiniz bir yerde saklayınız!')
kullaniciBilgileri = open("kullaniciBilgileri.txt", "w")
kullaniciBilgileri.write(ePosta + '\n' + kullaniciAdi + '\n' + sifre + '\n' + yeniSayı)

kodDosyasi = open("kodDosyasi.txt", "w")
kodDosyasi.write(yeniSayı)


# Dosyaları kapat
kullaniciBilgileri.close()
kodDosyasi.close()

Bu arada bunu ne için ve hangi amaçla yapıyorsun bilkmiyorum. Ama bilgilerin yazılı olacağı dosyaya, farklı isimler verirsen daha iyi olur. Mesela dosya ismini kullanıcı adı yapabilirsin. Bu sayede her defasında farklı dosya oluşturur.
Teşekkürler işe yarıyor ama o dosyadan sayıları silmemesi gerekiyor ??
mesela şöyle bir şey düşündüm ama nasıl yazacağımı bilmiyorum ;
İlk önce dosyadan 9' u okuyacak sonra bir eksiltecek,yani 8, dosyaya yazarken en üste yazacak böylece okurken zaten en üste yazdığından kod.read() komutu ile okuyabilecek.
 
Database için shelve modülünü kullandım. Dictionary işlemlerini biliyorsanız kolaylıkla kullanabilirsiniz

Python:
import shelve

db = shelve.open('kodDatabase.db', 'c')

# Kullanıcı Bilgileri
ePosta = input('E-Posta adresi giriniz: ')
kullaniciAdi = input('Kullanici Adi belirleyin: ')
sifre = input('Lutfen Sifre giriniz: ')

# str olarak oku, int'e dönüştür ve işle, tekrar str'a dönüştür

kodList = db["data"]

sayı = kodList[0]
yeniSayı = sayı - 1

yeniData = [yeniSayı] + kodList

db["data"] = yeniData

# Dosyaya alt alta yaz.
print('Bu kodu kaybetmeyeceğiniz bir yerde saklayınız!')
kullaniciBilgileri = open("kullaniciBilgileri.txt", "w")
kullaniciBilgileri.write(ePosta + '\n' + kullaniciAdi + '\n' + sifre + '\n' + str(yeniSayı))

# Dosyaları kapat
kullaniciBilgileri.close()



Ayrıca sıfırdan database oluştururken, bu kodu kullanabilirsiniz. Yukarıdaki kodla aynı klasörde olmalı:

Python:
import shelve

db = shelve.open('kodDatabase.db', 'c')

kodList = [9]

db["data"] = kodList
 
Son düzenleme:
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı