我有一种情况,我想将MP3存储在一个目录中,如果该目录不存在,则创建该目录,如果无法创建目录,则退出该程序。我读了os.path.exists()
涉及更多的是命中的性能比os.makedirs()
的,所以考虑到这一点我制作了下面的代码:当目录不存在时的错误处理
try:
# If directory has not yet been created
os.makedirs('Tracks')
with open('Tracks/' + title + '.mp3', 'w') as mp3:
mp3.write(mp3File.content)
print '%s has been created.' % fileName
except OSError, e:
# If directory has already been created and is accessible
if os.path.exists('Tracks'):
with open('Tracks/' + title + '.mp3', 'w') as mp3:
mp3.write(mp3File.content)
print '%s has been created.' % fileName
else: # Directory cannot be created because of file permissions, etc.
sys.exit("Error creating 'Tracks' Directory. Cannot save MP3. Check permissions.")
这是否有道理?或者我应该坚持使用更简洁,但可能更昂贵的版本来简单地检查目录是否存在,然后再创建它? 9/10次,该目录将在那里。
不管你的选择,你不不需要让大部分代码都写两次。 '尝试'做'dir',并且如果它存在则捕获异常。但是,在整个模块完成后再打开它。 – askewchan 2013-03-06 22:37:47