2015-03-19 4 views
0

Я делаю программу, которая шифрует содержимое файла в шифрованный текст. Моя проблема заключается в том, что когда моя программа просит пользователя ввести имя файла, который они хотят загрузить, и пользователь не дает действительного ответа, появляется сообщение «FileNotFoundError:». Я хочу, чтобы моя программа имела функцию, где, если пользователь не дает действительного ответа, программа будет продолжать повторять попытку пользователя.Python FileNotFoundError для ввода пользователем

def EncryptCode(): 
    encryptFileLoad = input("Name the file and directory you want to load with the ending '.txt':\n") 
    with open (encryptFileLoad,mode="r",encoding="utf=8") as encrypt_file: 
     encryptFile = encrypt_file.read() 

Я получаю сообщение об ошибке, как это:

Traceback (most recent call last): 
    File "C:\... 
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt' 

я пытался делать что-то вроде этого:

def EncryptCode(): 
    ... 
    try: 
     ... 
    except FileNotFoundError: 
     return EncryptCode 

ответ

0

насчет

def EncryptCode(): 
    file_not_found = True 
    while(file_not_found): 
     try: 
      encryptFileLoad = input("Name the file and directory you want to load with the ending '.txt':\n") 
      file_not_found = False 
     except FileNotFoundError: 
      print('that didnt work! try again') 
    with open (encryptFileLoad,mode="r",encoding="utf=8") as encrypt_file: 
     encryptFile = encrypt_file.read() 
0

Вы почти сделали это. Проверьте http://www.python-course.eu/recursive_functions.php Это должно быть что-то вроде этого:

def EncryptCode(): 
    try: 
     encryptFileLoad = input("Name the file and directory you want to load with the ending '.txt':\n") 
     with open(encryptFileLoad,mode="r",encoding="utf=8") as encrypt_file: 
      encryptFile = encrypt_file.read() 
      return encryptFile 
    except FileNotFoundError: 
     print('File not found. Input correct filename') 
     return EncryptCode() 

Или вы можете использовать while цикл, чтобы задать пользовательский ввод правильного имени файла, как:

while True: 
    try: 
     encryptFileLoad = input("Name the file and directory you want to load with the ending '.txt':\n") 
     with open (encryptFileLoad,mode="r",encoding="utf=8") as encrypt_file: 
      encryptFile = encrypt_file.read() 
     break 
    except FileNotFoundError: 
     print('File not found. Input correct filename') 
Смежные вопросы