2013-11-11 3 views
1

Почему это не открытие файла, который я ввел в функцию? Он открывается, когда я подключаю имя файла непосредственно к основной программе, но не тогда, когда я пытаюсь передать его через функцию. Это дает мне FileNotFoundError.Файл не открывается при передаче из функции

def get_valid_filename(prompt): 
    '''Use prompt (a string) to ask the user to type the name of a file. If 
    the file does not exist, keep asking until they give a valid filename. 
    Return the name of that file.''' 

    filename = input(prompt) 
    if os.path.isfile(filename) == False: 
    print ("That file does not exist.") 
    filename = input(prompt) 

    return filename 

if __name__ == '__main__': 

    prompt = 'enter the name of the file with unknown author:' 
    mystery_filename = get_valid_filename(prompt) 

    # readlines gives us the file as a list of strings each ending in '\n' 
    text = open(mystery_filename, 'r').read() 

    print (text) 
+1

вы, вероятно, имел в виду: 'пока не ISFILE (путь): путь = вход ("? Путь")' 'Примечание while' вместо' if' , Еще лучше, просто используйте 'return open (path)' внутри try/except (также в цикле), чтобы возвращать объект файла напрямую. – jfs

+0

Я не могу открыть файл внутри функции. Он должен оставаться в основной программе. – Nick

+0

, пожалуйста, исправьте отступ, питон нечитабелен без соответствующего отступа. –

ответ

0

get_valid_filename должен выглядеть следующим образом:

def get_valid_filename(prompt): 
    while True: 
     filename = input(prompt): 
     if os.path.exists(filename): 
      return filename 
     print('that file does not exist') 
Смежные вопросы