循环在一次迭代后意外停止

时间:2017-05-25 20:27:46

标签: python python-3.x loops

我遍历长度为4的列表列表,但在一次迭代后停止。

        print((data))
        formatted_exec_dictionary_list = []
        for entry in data:
            print(entry)
            try:
                formatted_exec = {
                    'minute': self.validate_type_and_range(entry[0], 0, 59),
                    'hour': self.validate_type_and_range(entry[1], 0, 23),
                    'path': entry[2]
                }
                formatted_exec_dictionary_list.append(formatted_exec)
            except IndexError as exception:
                print(exception)
                if self.logger:
                    self.logger.error("""
                    Could not successfully parse entry...
                    Exception: %s""", exception)

在代码段的最顶层打印中,这是输出:

[[u'30', u'1', u'/bin/run_me_daily'], [u'45', u'*', u'/bin/run_me_hourly'], 
 [u'*', u'*', u'/bin/run_me_every_minute'], 
 [u'*', u'19', u'/bin/run_me_sixty_times']]

但for循环包装的打印只返回第一个条目,然后停止。

因为打印没有触发而且程序的其余部分运行正常,所以似乎没有异常。它似乎只是忽略了列表中所有其他条目......

这是常见的吗?任何线索为什么会发生这种情况?

为了澄清,NOTHING特别发生在似乎抛出异常的循环中。函数validate_type_and_range打印预期的数据,但仅用于一次迭代。

1 个答案:

答案 0 :(得分:1)

当我更换您的' validate_type_and_range(...)'使用一些字符串,我得到以下输出:

[[u'30', u'1', u'/bin/run_me_daily'], [u'45', u'*',  u'/bin/run_me_hourly'], [u'*', u'*', u'/bin/run_me_every_minute'], 
[u'*', u'19', u'/bin/run_me_sixty_times']]
[u'30', u'1', u'/bin/run_me_daily']
[u'45', u'*', u'/bin/run_me_hourly']
[u'*', u'*', u'/bin/run_me_every_minute']
[u'*', u'19', u'/bin/run_me_sixty_times']

我认为您的“validate_type_and_range'

会发生一些事情
print((data))
    formatted_exec_dictionary_list = []
    for entry in data:
        print(entry)
        try:
            formatted_exec = {
                'minute': "foo",
                'hour': "bar",
                'path': entry[2]
            }
            formatted_exec_dictionary_list.append(formatted_exec)
        except IndexError as exception:
            print(exception)
            if self.logger:
                self.logger.error("""
                Could not successfully parse entry...
                Exception: %s""", exception)