def directories():
print("Creating STRaitRazor directories...")
try:
os.chdir("C:\\")
os.mkdir("STRaitRazor")
os.chdir("STRaitRazor")
os.mkdir("Analysis")
os.chdir("Analysis")
os.mkdir("config")
os.mkdir("fastq")
os.chdir("..")
os.mkdir("bin")
os.chdir("bin")
print("STRaitRazor directories successfully created")
Sevenzip()
except:
print("Could not create directories. Do directories already exist?")
response = input("Y/N\n")
if response == "Y" or response == "y":
Sevenzip()
elif response == "N" or response == "n":
print("Unexpected exception occurred, aborting...")
time.sleep(5)
sys.exit(1)
def Sevenzip():
os.chdir("C:\\STRaitRazor\\bin")
try:
print("Downloading 7zip into C:\\STRaitRazor\\bin...")
url = "https://www.7-zip.org/a/7z1900.exe"
urllib.request.urlretrieve(url, "7zip.exe")
path = "C:/STRaitRazor/bin/"
subprocess.call("7zip.exe /S /D=%s"%path)
print("7zip downloaded")
gitdownload()
except:
print("Could not download 7-zip. Check your internet connection and admin permissions.")
response = input("Press ENTER to exit...")
sys.exit(1)
我在遇到异常后实际上能够退出程序时遇到问题。我的代码示例在上面。基本上,我正在做的事情是将函数嵌套在其他函数中,因为该程序需要按照特定的顺序执行多项操作,因此我从顶部开始,检查函数是否正确执行,如果可以,请继续执行转到下一个功能。我的问题是例外。每次引发异常时,我告诉它时程序都不会退出。相反,它将引发应有的异常,然后上升到一个级别并引发该异常,依此类推,以此类推,直到最终退出。我到底在做什么错?是我嵌套函数的方式吗?无论在哪里写入“ sys.exit(1)”行,都有一种方法可以迫使程序退出?
尝试使用raise
示例
try:
with open('/usr/fakepath2whatever') as f:
pass
except:
raise
//do other stuff if case of no errors
输出:
FileNotFoundError: [Errno 2] No such file or directory: /usr/fakepath2whatever
这给了我一个FileNotFoundError,但是您可以随时使用raise
引发异常。该文档是here