2

这个问题的一般要点:如果出现问题的可能性很小,我应该抓住可能的错误吗?具体来说:

我有一个应用程序,它可以读取程序以前的历史记录并将其写入 .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("")

然后程序会根据 MP3 是否在txt文件中继续下载它们。下载 MP3 后,它会将其添加到txt文件中。像这样:

mp3File = requests.get(linkURL)
with open('trackData.txt', 'a') as f:
    f.write(linkURL + '\n')

现在,几乎 100% 确定该txt文件自在第一个函数中创建以来将保留。我们正在处理在这里下载一些 MP3 ——该程序将永远不会运行超过几分钟。但是,在下载 MP3 时,历史txt文件很可能已被用户删除或以其他方式损坏,在这种情况下,由于没有错误处理,程序将崩溃。

如果它不存在,一个好的程序员会将最后一个代码块包装在一个try ... except创建历史文件的块中,或者这只是不必要的偏执狂和浪费空间?txt实现起来很简单,但请记住,我有这样的程序,用户在很短的时间内有数百个机会删除/损坏以前创建的 txt 文件。我通常扁平的 Python 代码会变成一个嵌套的try ... except雷区。

4

2 回答 2

5

更安全的解决方案是在您仍在下载时打开文件并保持打开状态。用户将无法删除它。下载并记录所有内容后,关闭文件。这也将带来更好的性能。

于 2013-03-06T21:12:22.623 回答
5

为什么在应用程序启动时创建一个空文件?如果文件在启动时不存在,则什么也不做 -open('trackData.txt', 'a')仍会创建一个新文件。

于 2013-03-06T21:12:41.410 回答