关于python:使用try/except或if else创建和验证目录?

Creation and validation of directory using try/except or if else?

本问题已经有最佳答案,请猛点这里访问。

这只是一个关于哪一个更像"Python"的问题。

使用IF:

1
2
3
4
5
6
7
8
import os
somepath = 'c:\\\\somedir'
filepath = '%s\\\\thefile.txt' % somepath
if not os.path.exists(somepath) and not os.path.isfile(filepath):
    os.makedirs(somepath)
    open(filepath, 'a').close
else:
   print"file and dir allready exists"

或者使用Try/Except:

1
2
3
4
5
6
7
8
9
10
11
12
import os
somepath = 'c:\\\\somedir'
filepath = '%s\\\\thefile.txt' % somepath
try:
    os.makedirs(somepath)
except:
    print"dir allready exists"
try:
    with open(filepath):
        // do something
except:
    print"file doens't exist"

正如您在上面的示例中看到的,在Python上哪一个更正确?另外,在哪些情况下,我应该使用try/except替代if/else?我的意思是,我应该替换所有的if/else测试来尝试/except吗?

事先谢谢。


第二个更像是Python:"请求宽恕比允许更容易。"

但是在您的特定案例中使用异常还有另一个好处。如果应用程序运行多个进程或线程,"请求权限"并不能保证一致性。例如,以下代码在单个线程中运行良好,但可能在多个线程中崩溃:

1
2
3
4
if not os.path.exists(somepath):
    # if here current thread is stopped and the same dir is created in other thread
    # the next line will raise an exception
    os.makedirs(somepath)