Python:简化try/except代码?

2024-07-04 05:42:50 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,如果标题不够解释,但这是我能想到的最好的。这是我代码的一部分,是一个python脚本,它将文件从Xilog3转换为woodWOP格式(cnc程序)。你知道吗

try:
    print >>woodWOPfile, 'YA="%s"' %xbo['Y']
except KeyError:
    xbo['Y']=xbo_prev['Y']
    print >>woodWOPfile, 'YA="%s"' %xbo['Y']

这会将字典键项打印到输出文件。如果这个键不存在,我想从字典的前一个版本xbo\u prev加载它,它在每一个新行读取周期之前从xbo复制。你知道吗

使用打印规则两次似乎很愚蠢,但这是我能想出的最好办法。有什么方法可以简化这一点吗?你知道吗

谢谢:)。你知道吗


Tags: 文件代码程序脚本标题字典格式print
3条回答

现有的两个答案也很有效,但是如果您知道xbo_prev将拥有您的密钥,另一个选择是利用^{}default参数:

print >>woodWOPfile, 'YA="%s"' % xbo.get('Y', xbo_prev['Y'])

请注意,这并没有修改xbo,如果您打算修改xbo,您可以像juanchopanza建议的那样使用.setdefault(),尽管我认为在print语句中放置变异操作是令人困惑的,并且可能造成更多的伤害而不是好处。你知道吗

您只需使用dict.setdefault

print woodWOPfile, 'YA="%s"' % xbo.setdefault('Y', xbo_prev['Y'])

如果键Y存在于映射中,则获取该键对应的值,否则将其设置为第二个参数并返回它。你知道吗

if not 'Y' in xbo: 
    xbo['Y']=xbo_prev['Y']
print >>woodWOPfile, 'YA="%s"' %xbo['Y']

为什么不先检查一下它是否在那里,然后再设置。你知道吗

相关问题 更多 >

    热门问题