在python中停止操作而不停止模块
好的,我制作了一个模块,允许您更容易地将文件复制到目录。现在,我还有一些“try”和“except”在里面,以确保它不会以混乱的方式失败,不会关闭终端,但我也希望它在输入错误字符串或变量时显示不同的错误消息,并结束模块,但不是…如果我可以说,终端运行它,所以我这样做了:在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
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输出错误字符串
我为你重新输入了密码。。。我希望它现在的样子就是你的意思。