在多行上尝试 Except:Pass
Try, Except:Pass on multiple lines
我正在为一个名为 Abaqus 的程序编写另一个脚本,该程序在图表上绘制 XY 数据....并且我的部分脚本会根据是否命名为特定名称来更改线条样式....
所以我有一堆不同的曲线名称,如果图表包含该特定名称,我想执行代码来更改样式...例如...
session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(show=True)
session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(marker=FILLED_DIAMOND)
session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(size=2)
session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(color='#009afb')
session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(show=True)
session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(marker=FILLED_DIAMOND)
session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(size=2)
session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(color='#009afb')
session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(show=True)
session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(marker=FILLED_DIAMOND)
session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(size=2)
session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(color='#009afb')
session.curves[PathNameNew+'_S205-18'].lineStyle.setValues(thickness=1)
我有大约 50 种不同样式的不同曲线名称,并不是每次都会使用所有这些曲线,所以我正在考虑使用 Try,except:pass 方法来实现这一点......然而将意味着我必须为每个曲线名称执行此操作...
有没有更好的方法?
你总是可以创建一个闭包函数来为你做这件事:
def my_big_function():
...
def set_symbolstyle_value(key, **kwargs):
try:
session.curves[PathNameNew + key].symbolStyle.setValues(**kwargs)
except MyException:
do_something()
set_symbolstyle_value('_S201-16', show=True)
set_symbolstyle_value('_S201-16', marker=FILLED_DIAMOND)
...
功能便宜。不要害怕使用它们。
构建一个元组列表,每个元组包含两个元素 - 曲线名称和参数字典,如下所示:
[('somename',{'color':'blue', 'marker':FILLED_DIAMOND})...]
然后,根据上面的列表,执行以下操作:
for name, par in lst:
if name in session.curves:
session.curves[name].symbolStyle.setValues(**par)
我正在为一个名为 Abaqus 的程序编写另一个脚本,该程序在图表上绘制 XY 数据....并且我的部分脚本会根据是否命名为特定名称来更改线条样式....
所以我有一堆不同的曲线名称,如果图表包含该特定名称,我想执行代码来更改样式...例如...
session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(show=True)
session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(marker=FILLED_DIAMOND)
session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(size=2)
session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(color='#009afb')
session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(show=True)
session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(marker=FILLED_DIAMOND)
session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(size=2)
session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(color='#009afb')
session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(show=True)
session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(marker=FILLED_DIAMOND)
session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(size=2)
session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(color='#009afb')
session.curves[PathNameNew+'_S205-18'].lineStyle.setValues(thickness=1)
我有大约 50 种不同样式的不同曲线名称,并不是每次都会使用所有这些曲线,所以我正在考虑使用 Try,except:pass 方法来实现这一点......然而将意味着我必须为每个曲线名称执行此操作...
有没有更好的方法?
你总是可以创建一个闭包函数来为你做这件事:
def my_big_function():
...
def set_symbolstyle_value(key, **kwargs):
try:
session.curves[PathNameNew + key].symbolStyle.setValues(**kwargs)
except MyException:
do_something()
set_symbolstyle_value('_S201-16', show=True)
set_symbolstyle_value('_S201-16', marker=FILLED_DIAMOND)
...
功能便宜。不要害怕使用它们。
构建一个元组列表,每个元组包含两个元素 - 曲线名称和参数字典,如下所示:
[('somename',{'color':'blue', 'marker':FILLED_DIAMOND})...]
然后,根据上面的列表,执行以下操作:
for name, par in lst:
if name in session.curves:
session.curves[name].symbolStyle.setValues(**par)