循环遍历列表多次

时间:2016-05-18 13:17:33

标签: python

假设我有一个包含几行的文件source.txt。 我想一遍又一遍地打印行,直到我手动中断程序。

function custom_support_ticket_ajax_form_callback($args)
{
    $cas = $args['field_level_list']['und']['#value'];

    switch($cas){
        case 1:
            $message = t('Ticket 1');
            break;
        case 2: 
            $message = t('Ticket 2');
            break;
        case 3:
            $message = t('Ticket 3');
            break;
        default :
            $message = 'X';
    }

    $form['level_message']['level_textarea'] = [
        '#type'  => 'textarea',
        '#title' => 'message',
        '#value' => $message,
        '#weight' => -9,
    ];

    $form['level_message']['level_submit'] = [
        '#type'  => 'submit',
        '#value' => 'Send',
        '#ajax'  => [
            'event'    => 'click',
            'callback' => 'custom_support_sendMessage_callback'
        ],
        '#weight' => -8
    ];


    return ajax_command_replace('#level_message', $form['level_message']);}

最简单的解决方案是开放式和接近循环。我的感觉是,这不是最好的解决方案。

你能提出更好的建议吗? 如何多次循环变量源?

此致

2 个答案:

答案 0 :(得分:4)

我不确定这会有效,但看起来你可以只seek到文件的开头,然后继续迭代:

file_source = 'source.txt'
source = open(file_source,'r')

while 1:
    for line in source:
        print line
    source.seek(0)

source.close()     

显然,如果文件很小,你可以简单地将整个内容读入内存中的列表,然后迭代它。

答案 1 :(得分:1)

您可以先阅读这些行并将其保存到列表中。因此,您的文件在阅读后关闭。然后你可以继续你的无限循环:

lines = []

with open(file_source, 'rb') as f:
    lines = f.readlines()

while 1:
    for line in lines:
        print line

但是,如果您的文件非常大,则不建议这样做,因为文件中的所有内容都将被读入内存:

  

file.readlines([sizehint]):

     

使用EOF读取readline(),然后返回包含此类读取行的list