停止一个操作,而不停止python中的模块

问题描述:

好吧,我已经创建了一个模块,允许您更容易地将文件复制到目录。现在,我还有一些“尝试”和“除了”,以确保它不会以大混乱的方式失​​败并且不会关闭终端,但是我也希望它在显示错误的字符串时显示不同的错误消息或变量放入,并结束模块,但不是......如果我可以说,终端运行它,所以我这样做:停止一个操作,而不停止python中的模块

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

问题是,它并没有结束模块,如果有没有文件或目录,只有在完成。

+0

我重新为您代码...我希望现在看起来的方式是您的意思。 – 2010-06-26 01:56:06

您可能会认为,当引发异常时,Python会停止正在执行的操作,但这并不完全正确。 except:块实际上捕获了引发的异常,并且应该处理它。在完成except:块之后,Python将继续执行文件中的其余代码。

在你的情况下,我会在每个print(...)之后加上return。这样,在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)(失败)通常使用,但是,因为要输出的错误,上面的例子将输出错误的字符串标准错误。

Here's a link for more info on sys.exit()