Python 在“文件”中执行操作是否是一种良好的编码实践;除「;块
如果“try”块中的代码失败,那么这是一种python方法来纠正“except”块中的错误吗 我遇到过这两种代码片段:Python 在“文件”中执行操作是否是一种良好的编码实践;除「;块,python,try-except,Python,Try Except,如果“try”块中的代码失败,那么这是一种python方法来纠正“except”块中的错误吗 我遇到过这两种代码片段: import os import random workdir = str(random.randint(10**11, 10**12-1)) try: os.mkdir(workdir) except FileExistsError: workdir = str(random.randint(10**11, 10**12-1)) os.mkdir(w
import os
import random
workdir = str(random.randint(10**11, 10**12-1))
try:
os.mkdir(workdir)
except FileExistsError:
workdir = str(random.randint(10**11, 10**12-1))
os.mkdir(workdir)
print('Created directory ' + workdir)
os.chdir(workdir)
print('Changed to directory ' + os.getcwd())
一个比另一个好吗?使用异常实际上是一种很好的方法。有一个叫做EAFP的原则,它代表“请求原谅比允许更容易”。你可以阅读更多关于它的内容
第二个代码段看起来比第一个代码段更好,因为仍然有机会生成相同的数字。使用异常实际上是一种类似于python的方法。有一个叫做EAFP的原则,它代表“请求原谅比允许更容易”。你可以阅读更多关于它的内容
第二个代码段看起来比第一个代码段更好,因为仍然有机会生成相同的数字。只要它不是捕获特定类型的错误,您就知道它的原因,并且仍然能够以定义良好的行为运行程序。因此,实际上,这取决于错误的原因,是的,在except块内执行操作是完全可以接受的,只要在编写代码时输入块的原因仍然清楚。在第一个代码段中,仍然有机会在
except
块中获得fileexisterror
,因此,在这种具体情况下,第二个是首选的。正如@paritossingh所说,这就是为什么try/except子句首先存在的原因。请注意,存在一个创建临时文件和文件夹的现有Python模块:。第一个模块的正确版本是使用while
循环来创建目录,直到创建一个新的目录创建。也就是说,不要试图生成自己的随机目录名;请改用tempfile.mkdtemp
。只要它不是捕获特定类型的错误,您就可以知道它的原因,并且仍然能够以定义良好的行为运行程序。因此,实际上,这取决于错误的原因,是的,在except块内执行操作是完全可以接受的,只要在编写代码时输入块的原因仍然清楚。在第一个代码段中,仍然有机会在except
块中获得fileexisterror
,因此,在这种具体情况下,第二个是首选的。正如@paritossingh所说,这就是为什么try/except子句首先存在的原因。请注意,存在一个创建临时文件和文件夹的现有Python模块:。第一个模块的正确版本是使用while
循环来创建目录,直到创建一个新的目录创建。也就是说,不要试图生成自己的随机目录名;改用tempfile.mkdtemp
。
import os
import random
workdir = str(random.randint(10**11, 10**12-1))
try:
os.mkdir(workdir)
print("Directory " , workdir , " created")
except FileExistsError:
print("Directory " , workdir, " already exists")