发生错误时更改变量而不终止程序

时间:2015-10-29 05:24:45

标签: python python-3.x

这是我的基本代码:

fname = input("What is the name of the file to be opened")
    file = open(fname+".txt", "r")
    message = str(file.read())
    file.close()

我想要做的主要是确保程序试图打开的文件存在,我想知道是否有可能编写试图打开文件的代码以及何时发现该文件不存在告诉用户输入有效的文件名,而不是终止显示错误的程序。

我在想是否有东西检查代码是否返回错误,如果它确实可能使变量等于无效,if语句会在要求用户输入另一个文件名之前读取告诉用户问题。

伪代码:

fname = input("What is the name of the file to be opened")
        file = open(fname+".txt", "r")
        message = str(file.read())
        file.close()
if fname returns an error:
    Valid = invalid
while valid == invalid:
    print("Please enter a valid file name")
    fname = input("What is the name of the file to be opened")

if fname returns an error:
    Valid = invalid

2 个答案:

答案 0 :(得分:1)

我想这个想法是你要循环直到用户输入有效的文件名。试试这个:

import os

def get_file_name():
    fname = input('Please enter a file name: ')
    if not os.path.isfile(fname+".txt"):
      print('Sorry ', fname, '.txt is not a valid filename')
      get_file_name()
    else:
      return fname

file_name = get_file_name()

答案 1 :(得分:1)

遵守规则Asking for forgiveness is better then permission

使用context-managerwhile loop

代码:

while True: #Creates an infinite loop
    try:
        fname = input("What is the name of the file to be opened")
        with open(fname+".txt", "r") as file_in:
            message = str(file_in.read())
        break #This will exist the infinite loop
    except (OSError, IOError) as e:
        print "{} not_available Try Again ".format(fname)