在python中停止操作而不停止模块

在python中停止操作而不停止模块,python,exception,exception-handling,module,Python,Exception,Exception Handling,Module,好的,我制作了一个模块,允许您更容易地将文件复制到目录。现在,我还有一些“try”和“except”在里面,以确保它不会以混乱的方式失败,不会关闭终端,但我也希望它在输入错误字符串或变量时显示不同的错误消息,并结束模块,但不是…如果我可以说,终端运行它,所以我这样做了: def copy(): import shutil import os try: cpy = input("CMD>>> Name of file(with extens

好的,我制作了一个模块,允许您更容易地将文件复制到目录。现在,我还有一些“try”和“except”在里面,以确保它不会以混乱的方式失败,不会关闭终端,但我也希望它在输入错误字符串或变量时显示不同的错误消息,并结束模块,但不是…如果我可以说,终端运行它,所以我这样做了:

def copy():
    import shutil
    import os
    try:
        cpy = input("CMD>>> Name of file(with extension): ")
        open(cpy, "r")
    except:
        print("ERROR>>> 02x00 No such file")
    try:
        dri = input("CMD>>> Name of Directory: ")
        os.chdir(dri)
        os.chdir("..")
    except:
        print("ERROR>>> 03x00 No such directory")
    try:
        shutil.copy(cpy, dri)
    except:
        print("ERROR>>> 04x00 Command Failure")

问题是,如果没有文件或目录,它不会结束模块,只会在结束时结束。

您可能会认为,当引发异常时,Python只是停止它正在做的事情,但事实并非如此。
except:
块实际上捕获了引发的异常,并应该处理它。在
except:
块完成后,Python将继续执行文件中的其余代码

在您的情况下,我会在每次
打印(…)
之后放置一个
返回。这样,Python打印出错误消息后,它也将从
copy()
函数返回,而不是继续请求更多输入。

如果您确实希望在出现错误时退出模块…

这是你要怎么做的

def copy():
    import shutil
    import os
    import sys
    try:
        cpy = input("CMD>>> Name of file(with extension): ")
        open(cpy, "r")
    except:
        sys.exit("ERROR>>> 02x00 No such file")
    try:
        dri = input("CMD>>> Name of Directory: ")
        os.chdir(dri)
        os.chdir("..")
    except:
        sys.exit("ERROR>>> 03x00 No such directory")
    try:
        shutil.copy(cpy, dri)
    except:
        sys.exit("ERROR>>> 04x00 Command Failure")
通常使用sys.exit(0)(表示成功)和sys.exit(1)(表示失败),但是,由于您希望输出错误,上面的示例将向stderr输出错误字符串


我为你重新输入了密码。。。我希望它现在的样子就是你的意思。