这两个规范的Python代码等效

这两个规范的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

无法将以下两个规范转换为Python代码。我发现Python程序的术语很奇怪(抛出、捕获、异常内容)

第一个规范声明“如果文件不存在而无法打开,则必须捕获FileNotFoundError对象并抛出新的异常FileNotFoundError,该异常的内容为文件名。无法打开的任何其他异常都不会被捕获。文件名被发送到函数中

我把这个翻译成

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)”。