Python 脚本在找不到文件时中止

我是一名网络工程师,尝试手动编写Cisco Event Manager Applet脚本是一件非常麻烦的事情,所以我拼凑了一个脚本来尝试使其更容易/自动化。

计划原因:

当您使用该程序时,它会将您的脚本输出到终端并创建一个文件供您记录。我创建了一个初始提示,询问您以前是否使用过此程序,以便它将在开始之前完全删除该文件。这样做的原因是消除数据混淆的任何机会,并可能导致您尝试进行的配置更改出现问题。

问题:

如果用户对初始提示说“是”,询问他们以前是否使用过该程序,并且Python找不到该文件,则会出错。

所需协助:

我想尝试让程序在找不到文件时继续,而不是中止。

(如果有人有任何建议,任何关于清理的建议也会有所帮助)


红颜莎娜
浏览 120回答 3
3回答

梵蒂冈之花

我知道,如果您的文件不存在并且用户键入“y”,则会出现此问题。在这种情况下,您的函数应如下所示:# Searches for any previously made EMA script file and removes it. Currently errors out if file isn't seen #while beg == 0:    remove = input("Have you used this program before?\n[Y] Yes\n[N] No\n: ").lower()    if remove == "y":        # This line will check if the file exists, if it does it will be deleted        if os.path.exists("EMA_Script.txt"):            os.remove("EMA_Script.txt")            print("File Deleted")        beg += 1    elif remove == "n":        beg += 1    else:        print("Incorrect input.")        beg += 0如您所见,我添加了此功能,这将帮助您了解该文件是否存在,如果存在,请将其删除。如果该文件不存在,它将简单地继续下一条指令,从而从循环中分离出来。os.path.exists("EMA_Script.txt")beg += 1让我知道这是否适合您!

一只甜甜圈

的默认行为是在文件不存在时引发异常。如果要执行其他操作,则需要捕获异常:opentry:    f = open("EMA_Script.txt", "a+")except FileNotFoundError:    # your code to handle the case when the file doesn't exist (maybe open with write mode)虽然我们在这里,但在处理文件时使用上下文是一种很好的做法,以确保它们始终处于关闭状态 - 事实上,任何需要关闭的东西(如数据库连接)都应该以这种方式完成。原因是上下文将确保文件已关闭,即使 介于 和 之间的某些内容引发异常也是如此。openclose因此,与其说是这种模式:f = open(...)# do things with filef.close()您要执行以下操作:with open(...) as f:    # do things with file

www说

您可以使用 try/except 块来捕获 .此外,使用代替变量将清理代码:FileNotFoundErrorbreakbegimport oswhile True:    remove = input("Have you used this program before?\n[Y] Yes\n[N] No\n: ").lower()    if remove == "y":        try:            os.remove("EMA_Script.txt")            print("File Deleted")        except FileNotFoundError:            pass        break    elif remove == "n":        break    else:        print("Incorrect input.")第二个(嵌套)循环也是如此:如果输入正确,则中断循环,否则继续循环。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python