Search code examples
python-2.7savefile-exists

ask the user to make new username since the file already existed


based on the program. it can save file depend on the username that the user enter. how to make the program ask the user to change to other username since the username already existed.

while True:
RegOrLog = raw_input('[Register/Login]:')
if RegOrLog not in ('reg', 'register', 'REGISTER','log', 'login', 'LOGIN',\
                    'r','l'):
    print "Please enter 'register' if you dont have account"
    print "Please enter 'login' if you already registered"

if RegOrLog in ('reg', 'register', 'REGISTER','r','Register'):
    count = 0
    while count < 1:
        regusrnm = raw_input('Enter your desire login name:')
        regusrnm = regusrnm.lower()
        regpswrd = raw_input('Enter your password:')
        while True:
            regage = raw_input('Enter your age:')
            if int(regage) not in range(1, 100):
                print 'please enter apropriate value'
            else:
                break

        while True:
            reggender = raw_input('State your gender:')
            if reggender not in ('male', 'female'):
                print 'Are you an alien?'
            else:
                break

        data = {"username": regusrnm, "password": regpswrd, "age": regage,\
                "gender": reggender}
        pickle.dump( data, open( regusrnm, "wb" ) )
        RegOrLog = 'login'
        print 'Please login to your account for security purpose'
        break

if RegOrLog in ('log', 'login', 'LOGIN','l','Login'):
    logusrnm = raw_input('Enter your username:')
    data = pickle.load( open( logusrnm, "rb" ) )
    count = 3
    while count >= 1:
        logpswrd = raw_input('Enter your password:')
        count = count - 1
        if logpswrd != data["password"]:
            print "You have",count, "attempt left"
            if count == 0:
                print "The account doesn't exist or wrong password"
                print 'Please register a new one'
                break

        else:
            print 'Welcome Back',data["username"]
            break

and also how to make the save file store inside folder so not to make it messy. like it clean and neat :D


Solution

  • import os.path
    os.path.exists(file_name) 
    

    Returns True if directory or file with name file_name exists. So you just check

    if os.path.exists(regusrnm) == True:
        # ask user to enter another name
    

    That means that you change

    if RegOrLog in ('reg', 'register', 'REGISTER','r','Register'):
        count = 0
        while count < 1:
    

    to

    if RegOrLog in ('reg', 'register', 'REGISTER','r','Register'):
        count = 0
        while os.path.exists(regusrnm) == True:
    

    Before that you need to assign some value to regusrnm. admin seems to be a good one because every system has an admin :)

    So the whole part would be

    regusrnm = 'admin'
    if RegOrLog in ('reg', 'register', 'REGISTER','r','Register'):
        count = 0
        while os.path.exists(regusrnm) == True:
    

    You can also use os.path.isfile(file_name) to check if file_name is a file (and not a directory).