2014-11-13 3 views
0

Я только хочу, чтобы выполнить эту петлю rownum раз:Для строки в ограничении чтения питона

rownum = 1000 
with open('outputfile.csv', 'wb') as out: 
    with open('inputfile.csv', 'rbU') as ifile: 
     out_writer = csv.writer(out) 
     for row in read: 
      out_writer.writerow(row) 

Вставка что-то вроде for i in range(0, rownum): не работает, но я не могу понять, куда поместить его, либо. Как я могу сказать for y in x N times?

+1

Редактировать yor script для '' open ('outputfile.csv', 'wb') как out, open ('inputfile.csv', 'rbU') как ifile' вместо вложенного 'with'. Вероятно, поэтому вы ничего не получаете. – ha9u63ar

+0

@hagubear Вложенная инструкция 'with' работает нормально. (В Python 2.6 или ранее мы можем использовать только вложенный оператор, поскольку несколько контекстов в одной строке были [портированы только на Python 2.7] (https://docs.python.org/3 /whatsnew/2.7.html#other-language-changes)) –

ответ

4

Использование itertools.islice

for row in itertools.islice(read, stop = rownum): 
    out_writer.writerow(row) 
+0

<3 itertools. Обратите внимание, что здесь не требуется «остановка» kwarg, она также может быть позиционной. –

+1

Или просто пропустите цикл Python полностью: 'out_writer.writerows (itertools.islice (read, stop = rownum))' –

0

, если вы не хотите импортировать itertools, вы можете также использовать enumerate и break:

for rowidx, row in enumerate(read): 
     if rowidx == MAX_ROWS: break 
     out_writer.writerow(row) 

itertools более вещий, хотя.

Смежные вопросы