2014-11-13 2 views
0

에서 행에 대해 나는 단지이 루프를 rownum 번 실행할 : 작동하지 않습니다 for i in range(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 y in x N times은 어떻게 말합니까?

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

itertools하지만, 더 파이썬입니다 : 당신이 itertools을 가져 오지 않는 경우

+1

yor 스크립트를'with '로 중첩 대신'open ('outputfile.csv ','wb ')로 열고, ('inputfile.csv ','rbU ') as ifile로 엽니 다. 이것은 아마도 당신이 아무것도 얻지 못하는 이유 일 것입니다. – 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'stop'은 필요하지 않습니다. 위치 적으로도 될 수 있습니다. –

+1

아니면 그냥 파이썬 루프를 건너 뛰십시오 :'out_writer.writerows (itertools.islice (read, stop = rownum))' –

0

, 당신은 또한 enumeratebreak가 사용할 수 있습니다.