gpt4 book ai didi

python - 在 python 中使用 try except - 成本是多少?

转载 作者:行者123 更新时间:2023-12-01 04:56:17 26 4
gpt4 key购买 nike

我正在读取一个文件并使用 try catch 来捕获数据可能不是我正在查找的类型的情况:

for w in text.readlines():
try:
new = float(w.split()[3].replace(',', '.'))
if new < temp and w.split()[1][3:5] == '12':
temp = new
date = w
except ValueError:
''
except IndexError:
''

这确实是一个 hacky 解决方案,不是我会使用的东西,只是我编写的东西,因为我需要快速访问一些数据。但是,如果我想解析一个非常大的文件或流,这样的解决方案(修改以便更智能地进行调用等)是否可行,或者应该选择其他解决方案。我的主要问题是关于 try catch 的性能,它是一个昂贵的操作吗?是否有良好使用 try- except 的指南?希望这个问题不要太宽泛。如果是的话,请关注我的示例。

最佳答案

在您给出的特定示例中,您可以轻松测试并避免 IndexError 情况,因此我会进行该测试。 ValueError 更难检查,因此您应该捕获异常。

for w in text:
words = w.split()
if len(words) >= 4:
try:
new = float(words[3].replace(',', '.'))
if new < temp and words[1][3:5] == '12':
temp = new
date = w
except ValueError:
pass

不要在文件上使用 readlines(),您应该只迭代该文件。

当在异常之前检查或处理异常同样容易时,一个好的经验法则是考虑抛出异常的频率。如果在正常情况下异常很少触发,那么只需处理它,另一方面,如果这是常见情况,那么最好避免抛出它。由于我对您的数据一无所知,因此我不知道有多少行的字段少于 4 个字段,因此在这种情况下,选择是相当任意的。

关于python - 在 python 中使用 try except - 成本是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27295436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com