35FAN35
35FAN35

Reputation: 9

TypeError: int() argument must be a string, a bytes-like object or a real number, not '_io.TextIOWrapper'

I wrote a very basic banking app code but i get this errror. TypeError: int() argument must be a string, a bytes-like object or a real number, not '_io.TextIOWrapper'

Code is here:

data = open("data.txt" , "r+")

class Account :
    data = open("data.txt" , "r+")

    def __init__(self , isim , numara , bakiye):
        self.isim = isim
        self.numara = numara
        self.bakiye = int(bakiye)
        bakiye = data

    def hesapBilgileri(self):
        print("İsim : " , self.isim)
        print("Numara : " , self.numara)
        print("Bakiye : " , self.bakiye)
        bakiye = data

    def paraCek(self , miktar):
        if (self.bakiye - miktar <0) :
            print("Bakiyeniz yeterli değil...")
        else:
            self.bakiye -= miktar
            print("Yeni bakiye : " , self.bakiye)
            bakiye = data

    def paraYatır(self , miktar):
        self.bakiye += miktar
        print("Yeni bakiye : " , self.bakiye)
        bakiye = data



account = Account("Atilla" , 10000000000 , data )
while True :
login = input("Şifrenizi giriniz : ")
file = open("passwordspy.txt" , "r+")
login2 = file.read()
if login == login2:
    print("Giriş başarılı.")
    break
else:
    print("Şifre yanlış.")

if login == login2:
while True:
    islem = int(input("Hangi işlemi yapmak istiyorsanız numarasını tuşlayın...\n1.Hesap bilgilerini görüntüleme\n2.Para yatırma\n3.Para çekme\n\n"))
    if islem == 1:
        account.hesapBilgileri()
    elif islem == 2:
        miktar = int(input("Yatırılacak miktar : "))
        account.paraYatır(miktar)
    elif islem == 3:
        miktar = int(input("Çekilecek miktar : "))
        account.paraCek(miktar)
    else:
        print("Şifre yanlış...")  

Sorry , there are turkish words. But i hope you will handle this problem.

Upvotes: 0

Views: 80

Answers (1)

bitflip
bitflip

Reputation: 3684

you pass data as bakiye which isnt an integer but a file reference

This line:

account = Account("Atilla" , 10000000000 , data )

causes

self.bakiye = int(bakiye)

but data is

data = open("data.txt" , "r+")

you probably want to read data.txt and pass the string/content rather than the file / TextIOWrapper

Upvotes: 1

Related Questions