为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2022-09-06 21:15:42
我是一名网络工程师,尝试手动编写Cisco Event Manager Applet脚本是一件非常麻烦的事情,所以我拼凑了一个脚本来尝试使其更容易/自动化。计划原因:当您使用该程序时,它会将您的脚本输出到终端并创建一个文件供您记录。我创建了一个初始提示,询问您以前是否使用过此程序,以便它将在开始之前完全删除该文件。这样做的原因是消除数据混淆的任何机会,并可能导致您尝试进行的配置更改出现问题。问题:如果用户对初始提示说“是”,询问他们以前是否使用过该程序,并且Python找不到该文件,则会出错。所需协助:我想尝试让程序在找不到文件时继续,而不是中止。(如果有人有任何建议,任何关于清理的建议也会有所帮助)
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

我知道,如果您的文件不存在并且用户键入“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


让我知道这是否适合您!


查看完整回答
反对 回复 2022-09-06
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

的默认行为是在文件不存在时引发异常。如果要执行其他操作,则需要捕获异常:open


try:

    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 file

f.close()

您要执行以下操作:


with open(...) as f:

    # do things with file


查看完整回答
反对 回复 2022-09-06
?
www说

TA贡献1775条经验 获得超8个赞

您可以使用 try/except 块来捕获 .此外,使用代替变量将清理代码:FileNotFoundErrorbreakbeg


import os


while 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.")

第二个(嵌套)循环也是如此:如果输入正确,则中断循环,否则继续循环。


查看完整回答
反对 回复 2022-09-06
  • 3 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信