这个问题的一般要点:如果甚至有可能出现问题的可能性很小,我应该抓住可能的错误吗?具体做法是:
我有一个应用程序,可以读取和写入程序的先前历史记录到.txt文件。在初始化时,程序读取历史文件以确定它应该和不应该执行的操作。如果尚未存在历史文件,则会创建一个。像这样:
global trackList
try:
# Open history of downloaded MP3s and transfer it to trackList
with open('trackData.txt', 'r') as f:
trackrackList = f.readlines()
except Exception, e: #if file does not exist, create a blank new one
with open('trackData.txt', 'w') as f:
f.write("")
程序然后根据它们是否在txt
文件中继续下载MP3。下载MP3后,会将其添加到txt
文件中。像这样:
mp3File = requests.get(linkURL)
with open('trackData.txt', 'a') as f:
f.write(linkURL + '\n')
现在,几乎100%肯定txt
文件将在第一个函数中创建时保留。我们正在处理下载一些MP3 - 程序将永远不会运行超过几分钟。但是,远程可能是用户删除了历史txt
文件,或者在下载MP3时损坏了该文件,在这种情况下,由于没有错误处理,程序将崩溃。
如果一个好的程序员在try ... except
块中创建了历史txt
文件,如果它不存在,或者只是不必要的偏执和浪费的空间,那么它是否会将最后一段代码包装好?实现它是微不足道的,但请记住,我有这样的程序,用户可以在很短的时间内删除/破坏以前创建的txt文件。我平常的Python代码将变成嵌套的try ... except
雷区。
答案 0 :(得分:5)
更安全的解决方案是打开文件并在您下载时保持打开状态。然后用户将无法删除它。下载并记录所有内容后,关闭该文件。这也将带来更好的性能。
答案 1 :(得分:5)
为什么要在应用程序启动时创建一个空文件?如果启动时文件不存在,则不执行任何操作 - open('trackData.txt', 'a')
仍会创建新文件。