tel*_*tel 0 python coding-style try-catch repeat
我有一个代码,用于创建文件夹并在其中放置输出文件.我想使用try-except-else块和覆盖选项,可以设置为True或False,这样在文件夹已经存在并且overwrite设置为false的情况下,它将只打印文件夹已经存在,在所有其他情况下,它只会执行而不发表评论.
到目前为止,我提出的唯一解决方案如下:
def function( parameters, overwrite = False ):
try:
os.makedirs( dir )
except OSError:
if overwrite:
data making code...
else:
print dir + ' already exists, skipping...'
else:
if overwrite:
data making code...
Run Code Online (Sandbox Code Playgroud)
这个问题可能有更好或更优雅的解决方案吗?比如,例如,我不需要复制我的数据制作代码?这样做会让我想起太多的风格,我最终不得不用C语写一些东西,而且看起来并不像Pythonic.
你已经很近了.适应这个答案:
import os, errno
def mkdir(path, overwrite=False):
try:
os.makedirs(path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST:
if not overwrite:
print "path '%s' already exists" % path # overwrite == False and we've hit a directory that exists
else: raise
Run Code Online (Sandbox Code Playgroud)
我不明白你为什么会需要一个else在上try块.
| 归档时间: |
|
| 查看次数: |
1870 次 |
| 最近记录: |