这两个规范的Python代码等效
无法将以下两个规范转换为Python代码。我发现Python程序的术语很奇怪(抛出、捕获、异常内容) 第一个规范声明“如果文件不存在而无法打开,则必须捕获FileNotFoundError对象并抛出新的异常FileNotFoundError,该异常的内容为文件名。无法打开的任何其他异常都不会被捕获。文件名被发送到函数中 我把这个翻译成这两个规范的Python代码等效,python,try-catch,throw,raise,isinstance,Python,Try Catch,Throw,Raise,Isinstance,无法将以下两个规范转换为Python代码。我发现Python程序的术语很奇怪(抛出、捕获、异常内容) 第一个规范声明“如果文件不存在而无法打开,则必须捕获FileNotFoundError对象并抛出新的异常FileNotFoundError,该异常的内容为文件名。无法打开的任何其他异常都不会被捕获。文件名被发送到函数中 我把这个翻译成 try: f = open(filename) except FileNotFoundError(filename): raise FileNot
try:
f = open(filename)
except FileNotFoundError(filename):
raise FileNotFoundError(filename)
正如我已经说过的,我会问;术语很奇怪;例如“异常的内容是文件名”
另外,另一个规范是,如果参数文件名不是字符串类型,则抛出TypeError异常,异常内容为字符串“参数文件名不是字符串”
再说一遍,“例外的内容”
我对该规范的翻译是
x = isinstance(filename, (str))
if x == False:
raise TypeError('parameter filename is not a string')
首先,我们在python中执行
异常除外:
,而不是执行您执行的异常FileNotFoundError(文件名):
是的,一种思路是,如果open
找不到文件,它将抛出FileNotFoundError
,我们只需捕获一个常规异常并打印它就可以看到这一点
filename = 'abcd'
try:
f = open(filename)
except Exception as e:
print('{} {}'.format( e.__class__.__name__, e))
这将给
FileNotFoundError [Errno 2] No such file or directory: 'abcd'
e.。\uuuuu class\uuuu.\uuuuu name\uuuu
给出异常类的名称,e给出字符串描述
现在,正确的做法是
filename = 'abcd'
try:
f = open(filename)
except FileNotFoundError:
raise FileNotFoundError(filename)
这意味着当open
抛出一个FileNotFoundError
时,捕获该特定异常,并在通过执行FileNotFoundError(filename)
修改异常字符串后重新显示它,这里我们将异常字符串修改为filename
为了了解现在发生了什么,我们以这种方式调用这个函数
def func():
filename = 'abcd'
try:
f = open(filename)
except FileNotFoundError:
raise FileNotFoundError(filename)
try:
func()
except Exception as e:
print('{} {}'.format(e.__class__.__name__, e))
它将输出FileNotFoundError about
。我们在这里看到异常字符串或您所称的内容,文件名在这里被打印为异常字符串
下面是您的假设
x = isinstance(filename, (str))
if x == False:
raise TypeError('parameter filename is not a string')
有点正确,文件名不仅包括字符串,还包括我们在文档中看到的整数:
file是一个类似路径的对象,提供要打开的文件的路径名(绝对或相对于当前工作目录)或要包装的文件的整数文件描述符
下面是一个例子
filename = 1.45
try:
f = open(filename)
except Exception as e:
print('{} {}'.format( e.__class__.__name__, e))
输出应该是
TypeError整数参数,得到float
,因为它试图将float转换为int,将其视为一个文件描述符,但它得到了一个float,首先,我们在python中执行除了异常:
,而不是您执行的除了FileNotFoundError(filename):
是的,一种思路是,如果open
找不到文件,它将抛出FileNotFoundError
,我们只需捕获一个常规异常并打印它就可以看到这一点
filename = 'abcd'
try:
f = open(filename)
except Exception as e:
print('{} {}'.format( e.__class__.__name__, e))
这将给
FileNotFoundError [Errno 2] No such file or directory: 'abcd'
e.。\uuuuu class\uuuu.\uuuuu name\uuuu
给出异常类的名称,e给出字符串描述
现在,正确的做法是
filename = 'abcd'
try:
f = open(filename)
except FileNotFoundError:
raise FileNotFoundError(filename)
这意味着当open
抛出一个FileNotFoundError
时,捕获该特定异常,并在通过执行FileNotFoundError(filename)
修改异常字符串后重新显示它,这里我们将异常字符串修改为filename
为了了解现在发生了什么,我们以这种方式调用这个函数
def func():
filename = 'abcd'
try:
f = open(filename)
except FileNotFoundError:
raise FileNotFoundError(filename)
try:
func()
except Exception as e:
print('{} {}'.format(e.__class__.__name__, e))
它将输出FileNotFoundError about
。我们在这里看到异常字符串或您所称的内容,文件名在这里被打印为异常字符串
下面是您的假设
x = isinstance(filename, (str))
if x == False:
raise TypeError('parameter filename is not a string')
有点正确,文件名不仅包括字符串,还包括我们在文档中看到的整数:
file是一个类似路径的对象,提供要打开的文件的路径名(绝对或相对于当前工作目录)或要包装的文件的整数文件描述符
下面是一个例子
filename = 1.45
try:
f = open(filename)
except Exception as e:
print('{} {}'.format( e.__class__.__name__, e))
输出是“代码> Type错误整数参数,得到浮点< /C>,因为它试图将浮点转换成int,但它认为是文件描述符,但它有浮点< /p>它需要整数。有趣。好的。太好了!很高兴能帮助@格罗格!如果答案帮助你,请点击旁边的滴答键:请点击A。另外,在使用Python时,您只能将字符串写入文件吗?我尝试使用Python将整数写入文件,但它给出了一个类型错误。您如何写入文件?打开要写入的文件后;“f.write(5)“。它需要整数。有趣。回答很好,太好了!很高兴帮助@Grog!如果答案对你有帮助,请考虑点击它旁边的滴答声:“请同时考虑一下:”。另外,在使用Python时,是否只能将字符串写入文件?我试着用Python将一个整数写入一个文件,但它给出了一个TypeError;“f.写(5)”。