2014-07-24 2 views
0

안녕을 n 개의 행의 수를 계산 나는 csv 파일의 행 수를 계산하려면 다음 코드를 시도 : 파일은 3 행이있는 경우파이썬은 CSV

import os 
os.chdir('C:\\Users') 
csv_file = open("count_rows.csv", "rb") 
row_count = sum(1 for row in csv_file.read()) 
csv_file.close() 
print (row_count) 

위의 코드는 결과로 (18)를 표시합니다.

제안 사항?

라인을 반복하지 않는

+0

왜 'rb'로 파일을여셨습니까? 바이너리 파일 용입니다. 너는''r ''을 원한다. – CoryKramer

답변

1

다음 줄을 너무 많이 감사합니다,하지만 파일 내용의 각 바이트. (순회 문자열 객체 수율 단일 문자열을)

row_count = sum(1 for row in csv_file.read()) 

이 선을 반복 단지 파일 객체를 반복하려면 :

# Using `with` statement, you don't need to close manually. 
# Use raw string literal: you can avoid escape 
with open(r"C:\Users\count_rows.csv") as csv_file: # `r`: use text mode 
    row_count = sum(1 for row in csv_file) 
    print(row_count) 
1

csv_file해야한다 :

여기
row_count = sum(1 for row in csv_file) 

이가 두드러 수정 된 버전입니다 반복기가되어야합니다. sum(1 for row in csv_file) 만 실행하면됩니다.

>>> fname = "file.txt" 
>>> with open(fname) as f: 
...  for i, line in enumerate(f, 1): 
...   pass 
... print i 

enumerate을 위해 번호를 생성하고 다음과 같이 계산 라인을 가질 수

with open('count_rows.csv') as buff: 
    row_count = sum(1 for _ in buff) 

print(row_count) 
+0

아름다운. 감사! –

0

텍스트 파일 (포함 CSV.) :

또한, a context manager로 파일을 열 수있는 가장 좋은 방법입니다 모든 행을 i에 할당합니다.

루프가 종료되면 i에 줄 수가 유지됩니다. 참고로 enumerate에는 1 인수가 사용되어 1부터 번호 매기기를 설정합니다. (감사합니다 falsetru)

+0

'enumerate (f, 1)'을 사용하면'i'는 줄 수를 유지합니다. BTW, 파일이 비어 있으면 (0 바이트), 마지막 문은'NameError'를 발생시킵니다. – falsetru

+0

@falsetru 감사합니다. 답변에 추가되었습니다. –