【问题标题】:Try, Except:Pass on multiple lines尝试,除了:多行传递
【发布时间】:2015-03-16 17:48:13
【问题描述】:

我正在为一个名为 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 方法来实现这一点......但这意味着我会必须为每个曲线名称执行此操作...

有没有更好的办法?

【问题讨论】:

    标签: python except try-except


    【解决方案1】:

    你总是可以为你做一个闭包函数:

    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)
        ...
    

    功能很便宜。不要害怕使用它们。

    【讨论】:

      【解决方案2】:

      构建一个元组列表,每个元组包含两个元素 - 曲线名称和参数字典,如下所示:

      [('somename',{'color':'blue', 'marker':FILLED_DIAMOND})...]
      

      然后,在上面的列表中,执行以下操作:

      for name, par in lst:
          if name in session.curves:
              session.curves[name].symbolStyle.setValues(**par)
      

      【讨论】:

        猜你喜欢
        • 2021-11-08
        • 2019-03-17
        • 2011-08-31
        • 1970-01-01
        • 1970-01-01
        • 2013-04-25
        • 2019-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多