我正在使用pandas汇总一个简短的数据分析脚本,并将结果写入带有图表的Excel工作表。
目前,我正在使用sys.exit
让用户了解与输入数据相关的问题。
以下是一个例子:
if len(titles) != len(plot_key):
raise sys.exit('Error: Number of chart titles does not equal the number of plots to be generated')
在一个案例中,我想与用户分享存储在变量中的更多信息
if df[df.Well > 3].empty is False:
sys.exit('Error: Data contains more than 3 wells.')
如果条件为True
并且df[df.Well > 3]
中有值,我想与用户分享df[df.Well > 3]
的索引,以便他们知道问题存在的位置,而不是离开要由他们弄明白。
现在我正在这样做,但这似乎是一个黑客。
if df[df.Well > 3].empty is False:
print df[df.Well > 3].index.get_values()
sys.exit('Error: Data contains more than 3 wells.')
对最佳做法的任何建议都会非常感激。
答案 0 :(得分:0)
提出自定义错误的pythonic方法是定义自己的异常。这可能类似于:
class MyCustomException(Exception):
pass
class ChartTitles(MyCustomException):
pass
class TooManyWells(MyCustomException):
pass
if len(titles) != len(plot_key):
raise ChartTitles(
'Number of chart titles does not equal the number of plots to be generated')
if not df[df.Well > 3].empty:
raise TooManyWells(
"Data contains more than 3 wells '%s'" % df[df.Well > 3].index.get_values())
将所有自定义异常基于一个基本自定义异常,可以更轻松地捕获所有异常。