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