Python 在“文件”中执行操作是否是一种良好的编码实践;除「;块

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

如果“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(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")