2014-01-15 3 views

답변

4

이를 처음에는 파일의 끝까지 이미 탐색했기 때문에 작동하지 않습니다. 되감기 (.seek(0) 사용)하거나 파일을 다시 열어야합니다.

다른 어떤 포인터 :

  1. 파이썬은 아주 좋은 csv 모듈이있다. 교육용으로하지 않는 한 CSV 구문 분석을 구현하지 마십시오.
  2. 'rb'이 아닌 'rU' 모드에서 파일을 여는 것이 좋습니다. 'rU'은 유니버설 개행 모드로, 다른 라인 엔딩이있는 플랫폼에서 오는 소스 파일을 처리합니다.
  3. 파일 객체 작업시 with을 사용하십시오. 오류가 발생하더라도 핸들을 정리합니다. 예 :

.

with open(r"H:\Test\test.csv", "rU") as f: 
    for line in f: 
     ... 
+0

csv 모듈을 사용하여 파일을 읽는 것이 좋습니다. 그것은 내가 필요로하는 것이었던리스트 인덱스를 사용할 수있게했다. –

+0

목록에 대해 비슷한 재설정 기능이 있습니까? 비슷한 상황에서 목록에있는 항목을 인쇄하고 처음에는 작동하지만 동일한 코드를 입력하면 아무것도 인쇄되지 않습니다. 목록을 삭제하고 다시 작성해야합니다. 문제가있는 경우 Python IDLE 셸을 사용하고 있습니다. –

+0

@ wannabe_n00b 별도의 질문을하고 코드를 표시하십시오. – TkTech

2

CSV 파일을 끝까지 읽었으므로 반복기가 고갈되었습니다. 두 번째 루프 전에 다시 열어야합니다.

+0

seek (0)을 사용하는 것은 또 다른 대안이며 오버 헤드가 적고 (중요하지 않음) 읽기/쓰기 동시성 잠재적 문제를 방지해야합니다. –

3

변수의 파일에서 데이터를 읽고 수 있으며이 데이터를 반복 할 수 있습니다. 스크립트에서 원하는 시간을 seek 앞뒤로 수행하는 것보다 낫습니다.

f = open(r"H:\Test\test.csv", "rb") 
data = f.readlines() 
for line in data: 
     print line 

for line in data: 
     print line 

출력 :

# This is test.csv 

Line1,This is line 1, there are, some numbers here,321423423 

Line2,This is line2 , there are some characters here,sdfdsfdsf 

# This is test.csv 

Line1,This is line 1, there are, some numbers here,321423423 

Line2,This is line2 , there are some characters here,sdfdsfdsf 
+0

로드하는 CSV에 따라 다릅니다. 일반적으로 고객이 제공하는 CSV 파일로 작업 할 때 크기는 여러 GB입니다. 'seek (0)'은 모든 것을 메모리에로드하는 것보다 매우 싸다. – TkTech