On 06/07/14 22:00, Ali Mammadov wrote:

common pratice, I want my function to check user's input(in this case
it's file name) and re-ask it again and again(until correct) offering
him two choices: re-enter file name or close program.I've decided to use
try/except construction in this particular task.

Thats the wrong solution.
try/except is for catching errors not repeating actions.
You need to combine the try/except with a loop.

BTW, I created a small gist located here
<https://gist.github.com/bca59570ea5fd365c672> which demonstrates my
problem.

For short (<100lines) example just post it in your message, it saves a lot of extra jumping around. Here it is:

---------------
def makelgpwdcombs(brutelistname):
        try:
                blst = open(brutelistname, 'r')
        except:
                print("[-] Invalid file name or insufficient priviliges")
        else:
                print("[+] File opened. Working...")
--------------------

Drop the else clause and put the try/except inside a while...

def makelgpwdcombs(brutelistname):
    while True:
       try:
          blst = open(brutelistname, 'r')
          break # exit loop if no error
       except:
          print("[-] Invalid file name or insufficient priviliges")

    print("[+] File opened. Working...")   # only after valid input

loops are for repeating, try/except is for catching errors.
Use the right tool for the job.

HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to