我正在尝试创建一个文件夹,处理不同的错误(如果文件夹已经存在,则FileExistsError
,如果文件夹名称包含非法字符,则OSError
),但是Python似乎总是选择第一个捕获错误时,block除外,无论错误是哪一个以及它们的顺序如何。
有什么我不懂的吗?
import os
from pathlib import Path
def generateSetup(name) :
dir_path = os.path.dirname(os.path.realpath(__file__))
if not Path(dir_path + '/setups').exists() : os.mkdir(dir_path + '/setups')
try : os.mkdir(dir_path + '/setups/' + name)
except FileExistsError : print('The file already exists')
except OSError : print('The name contains illegal characters')
stp_name = input('Enter your setup\'s name :')
generateSetup(stp_name)
答案 0 :(得分:2)
您的代码没有错。它可以按预期正常运行,如果目录已经存在,则捕获2x2
,如果目录名称包含无效符号,则捕获import numpy as np
from sympy import Matrix
from scipy.optimize import minimize
def Testfunction(x):
a = np.array([[1],[3],[6]]) #3x1 np.ndarray
b = np.array([[2]]) #1x1 np.ndarray
c = Matrix(x@x.T).vech() #3x1 mutable dense matrix
y = np.transpose(np.subtract(a,c)) * b * np.subtract(a,c)
return y #y should be a 1x1 np.ndarray
x0= np.array([[1],[3]]) # 2x1 np.ndarray
print(Matrix(x0@x0.T).vech()) # works (3x1 mutable dense matrix)
print(Testfunction(x0)) # works (3x3 instead of 1x1 np.ndarray though)
result = minimize(Testfunction, x0, method='nelder-mead', options={'xtol': 1e-8, 'disp': True}) #does not work as explained above
。所以我认为问题出在您测试代码的方式上
FileExistsError
答案 1 :(得分:0)
我们可以给目录起任何名字,通过python代码创建目录没有遵循的命名约定。 在这种情况下,如果输入的名称已经是目录名称,则只有第一个除外块会抛出消息。否则,