Python csv reader количество строк

Сколько строк в CSV Python?

Я использую python (Django Framework) для чтения CSV файла. Я вытаскиваю только 2 строки из этого CSV, как вы можете видеть. То, что я пытался сделать, это сохранить в переменной общее количество строк CSV.

Как получить общее количество строк?

file = object.myfilePath fileObject = csv.reader(file) for i in range(2): data.append(fileObject.next()) 
len(fileObject) fileObject.length 

ОТВЕТЫ

Ответ 1

Вам нужно подсчитать количество строк:

row_count = sum(1 for row in fileObject) # fileObject is your csv.reader 

Использование sum() с выражением генератора делает эффективный счетчик, избегая хранения всего файла в памяти.

Если вы уже прочитали 2 строки для начала, вам нужно добавить эти 2 строки в общую сумму; строки, которые уже были прочитаны, не учитываются.

Ответ 2

РЕДАКТИРОВАТЬ 2018-10-29

Я протестировал несколько видов кода, чтобы получить количество строк в CSV файле с точки зрения скорости. Лучший метод ниже.

with open(filename) as f: sum(1 for line in f) 
import timeit import csv import pandas as pd filename = './sample_submission.csv' def talktime(filename, funcname, func): print(f"# ") t = timeit.timeit(f'("")', setup=f'from __main__ import ', number = 100) / 100 print('Elapsed time : ', t) print('n = ', func(filename)) print('\n') def sum1forline(filename): with open(filename) as f: return sum(1 for line in f) talktime(filename, 'sum1forline', sum1forline) def lenopenreadlines(filename): with open(filename) as f: return len(f.readlines()) talktime(filename, 'lenopenreadlines', lenopenreadlines) def lenpd(filename): return len(pd.read_csv(filename)) + 1 talktime(filename, 'lenpd', lenpd) def csvreaderfor(filename): cnt = 0 with open(filename) as f: cr = csv.reader(f) for row in cr: cnt += 1 return cnt talktime(filename, 'csvreaderfor', csvreaderfor) def openenum(filename): cnt = 0 with open(filename) as f: for i, line in enumerate(f,1): cnt += 1 return cnt talktime(filename, 'openenum', openenum) 
# sum1forline Elapsed time : 0.6327946722068599 n = 2528244 # lenopenreadlines Elapsed time : 0.655304473598555 n = 2528244 # lenpd Elapsed time : 0.7561274056295324 n = 2528244 # csvreaderfor Elapsed time : 1.5571560935772661 n = 2528244 # openenum Elapsed time : 0.773000013928679 n = 2528244 

В заключение, sum(1 for line in f) является самой быстрой. Но может не быть существенного отличия от len(f.readlines()) .

sample_submission.csv sample_submission.csv имеет sample_submission.csv МБ и 31 миллион символов.

Ответ 3

Чтобы сделать это, вам нужно немного кода, как мой пример здесь:

file = open("Task1.csv") numline = len(file.readlines()) print (numline) 

Я надеюсь, что это помогает всем.

Ответ 4

Некоторые из приведенных выше предложений подсчитывают количество LINES в файле csv. Но некоторые файлы CSV содержат строки с кавычками, которые сами содержат символы новой строки. Файлы MS CSV обычно ограничивают записи с помощью \r\n, но используют только \n в цитированных строках.

Читайте также:  Php номер строки функции

Для файла, подобного этому, подсчет строк текста (как указано в новой строке) в файле даст слишком большой результат. Поэтому для точного подсчета вам нужно использовать csv.reader для чтения записей.

Ответ 5

row_count = sum(1 for line in open(filename)) работал для меня.

Примечание: sum(1 for line in csv.reader(filename)) кажется, вычисляет длину первой строки

Ответ 6

numline = len(file_read.readlines()) 

Ответ 7

Используйте «список», чтобы соответствовать более работоспособному объекту.

Вы можете посчитать, пропустить, мутировать, пока не пожелает ваше сердце:

list(fileObject) #list values len(list(fileObject)) # get length of file lines list(fileObject)[10:] # skip first 10 lines 

Ответ 8

Сначала вам нужно открыть файл с открытым

input_file = open("nameOfFile.csv","r+") 

Затем используйте csv.reader для открытия csv

reader_file = csv.reader(input_file) 

В последнем случае вы можете взять число строк с инструкцией ‘len’

value = len(list(reader_file)) 
input_file = open("nameOfFile.csv","r+") reader_file = csv.reader(input_file) value = len(list(reader_file)) 

Помните, что если вы хотите повторно использовать файл csv, вам нужно создать файл input_file.fseek(0), потому что, когда вы используете список для файла reader_file, он считывает весь файл, а указатель в файле меняет свою позицию

Ответ 9

когда вы создаете экземпляр объекта csv.reader и просматриваете весь файл, вы можете получить доступ к переменной экземпляра line_num, предоставляющей количество строк:

import csv with open('csv_path_file') as f: csv_reader = csv.reader(f) for row in csv_reader: pass print(csv_reader.line_num) 

Ответ 10

может попробовать что-то простое, как показано ниже в командной строке:

sed -n ‘$=’ filename или wc -l filename

Ответ 11

import csv count = 0 with open('filename.csv', 'rb') as count_file: csv_reader = csv.reader(count_file) for row in csv_reader: count += 1 print count 

Ответ 12

Это работает для csv и всех файлов, содержащих строки в Unix-системах:

import os numOfLines = int(os.popen('wc -l < file.csv').read()[:-1]) 

Если файл csv содержит строку полей, вы можете вычесть ее из numOfLines выше:

numOfLines = numOfLines - 1 

Ответ 13

data = pd.read_csv("data.csv") data.shape 

и в выводе вы можете увидеть что-то вроде (aa, bb), где aa - это количество строк

Ответ 14

Я думаю, что мы можем немного улучшить лучший ответ, я использую:

len = sum(1 for _ in reader) 

Более того, мы не должны забывать, что Python-код не всегда имеет лучшую производительность в проекте. Например: если мы можем одновременно выполнять больше операций в одном и том же наборе данных, лучше делать все в одном и том же бугле, вместо этого сделайте два или более питоновых букала.

Ответ 15

import pandas as pd data = pd.read_csv('data.csv') totalInstances=len(data) 

Источник

Посчитайте, сколько строк в CSV Python?

Я использую Python (Django Framework) для чтения файла CSV. Я вытащил только 2 строки из этого CSV, как вы можете видеть. То, что я пытался сделать, это сохранить в переменной общее количество строк в CSV.

Читайте также:  Python встроенные функции методы

Как я могу получить общее количество строк?

file = object.myfilePath fileObject = csv.reader(file) for i in range(2): data.append(fileObject.next()) 
len(fileObject) fileObject.length 

20 ответов

Вам нужно посчитать количество строк:

row_count = sum(1 for row in fileObject) # fileObject is your csv.reader 

С помощью sum() с выражением генератора обеспечивает эффективный счетчик, избегая хранения всего файла в памяти.

Если вы уже прочитали 2 строки для начала, то вам нужно добавить эти 2 строки к вашему итогу; строки, которые уже были прочитаны, не учитываются.

РЕДАКТИРОВАТЬ 2018-10-29

Я протестировал несколько видов кода, чтобы получить количество строк в CSV-файле с точки зрения скорости. Лучший метод ниже.

with open(filename) as f: sum(1 for line in f) 
import timeit import csv import pandas as pd filename = './sample_submission.csv' def talktime(filename, funcname, func): print(f"# ") t = timeit.timeit(f'("")', setup=f'from __main__ import ', number = 100) / 100 print('Elapsed time : ', t) print('n = ', func(filename)) print('\n') def sum1forline(filename): with open(filename) as f: return sum(1 for line in f) talktime(filename, 'sum1forline', sum1forline) def lenopenreadlines(filename): with open(filename) as f: return len(f.readlines()) talktime(filename, 'lenopenreadlines', lenopenreadlines) def lenpd(filename): return len(pd.read_csv(filename)) + 1 talktime(filename, 'lenpd', lenpd) def csvreaderfor(filename): cnt = 0 with open(filename) as f: cr = csv.reader(f) for row in cr: cnt += 1 return cnt talktime(filename, 'csvreaderfor', csvreaderfor) def openenum(filename): cnt = 0 with open(filename) as f: for i, line in enumerate(f,1): cnt += 1 return cnt talktime(filename, 'openenum', openenum) 
# sum1forline Elapsed time : 0.6327946722068599 n = 2528244 # lenopenreadlines Elapsed time : 0.655304473598555 n = 2528244 # lenpd Elapsed time : 0.7561274056295324 n = 2528244 # csvreaderfor Elapsed time : 1.5571560935772661 n = 2528244 # openenum Elapsed time : 0.773000013928679 n = 2528244 

В заключение, sum(1 for line in f) самый быстрый Но не может быть существенной разницы от len(f.readlines()) ,

sample_submission.csv 30,2 МБ и имеет 31 миллион символов.

Источник

Посчитайте, сколько строк в CSV Python?

Я использую Python (Django Framework) для чтения файла CSV. Я вытащил только 2 строки из этого CSV, как вы можете видеть. То, что я пытался сделать, это сохранить в переменной общее количество строк CSV также.

Как узнать общее количество строк?

file = object.myfilePath fileObject = csv.reader(file) for i in range(2): data.append(fileObject.next()) 
len(fileObject) fileObject.length 

14 ответов

Вам нужно посчитать количество строк:

row_count = sum(1 for row in fileObject) # fileObject is your csv.reader 

Использование sum() с выражением генератора создает эффективный счетчик, избегая сохранения всего файла в памяти.

Если вы уже прочитали 2 строки для начала, то вам нужно добавить эти 2 строки к вашему итогу; строки, которые уже были прочитаны, не учитываются.

numline = len(file_read.readlines()) 

Сначала вы должны открыть файл с открытым

input_file = open("nameOfFile.csv","r+") 

Затем используйте csv.reader для открытия CSV

reader_file = csv.reader(input_file) 

Наконец, вы можете взять номер строки с инструкцией 'len'

value = len(list(reader_file)) 
input_file = open("nameOfFile.csv","r+") reader_file = csv.reader(input_file) value = len(list(reader_file)) 

Помните, что если вы хотите повторно использовать файл CSV, вы должны сделать input_file.fseek (0), потому что, когда вы используете список для файла reader_file, он читает весь файл, и указатель в файле меняет свою позицию

Читайте также:  Java arraylist вывод индекса

Я думаю, что мы можем немного улучшить лучший ответ, я использую:

len = sum(1 for _ in reader) 

Более того, мы не должны забывать, что Python-код не всегда имеет лучшую производительность в проекте. Например: если мы можем одновременно выполнять больше операций в одном и том же наборе данных, лучше делать все в одном и том же бугле, вместо этого сделайте два или более питоновых букала.

data = pd.read_csv("data.csv") data.shape 

И в выводе вы можете увидеть что-то вроде (aa, bb), где aa - это количество строк

Используйте «список», чтобы разместить более работоспособный объект.

Затем вы можете считать, пропускать, мутировать до желания вашего сердца:

list(fileObject) #list values len(list(fileObject)) # get length of file lines list(fileObject)[10:] # skip first 10 lines 

Для этого вам нужно немного кода, как мой пример здесь:

file = open("Task1.csv") numline = len(file.readlines()) print (numline) 

Я надеюсь, что это помогает всем.

row_count = sum(1 for line in open(filename)) работал на меня.

Примечание: sum(1 for line in csv.reader(filename)) , кажется, вычисляет длину первой строки

import csv count = 0 with open('filename.csv', 'rb') as count_file: csv_reader = csv.reader(count_file) for row in csv_reader: count += 1 print count 

Некоторые из приведенных выше предложений подсчитывают количество ЛИНИЙ в файле CSV. Но некоторые CSV-файлы содержат строки в кавычках, которые сами содержат символы новой строки. Файлы MS CSV обычно разделяют записи с помощью \ r \ n, но используют \ n только внутри строк в кавычках.

Для файла, подобного этому, подсчет строк текста (разделенных символом новой строки) в файле даст слишком большой результат. Поэтому для точного подсчета вам нужно использовать csv.reader для чтения записей.

Возможно, вы захотите попробовать что-то простое, как показано ниже в командной строке:

sed -n '$ =' filename или wc -l имя файла

import pandas as pd data = pd.read_csv('data.csv') totalInstances=len(data) 

Когда вы создаете экземпляр объекта csv.reader и просматриваете весь файл, вы можете получить доступ к переменной экземпляра line_num, предоставляющей количество строк:

import csv with open('csv_path_file') as f: csv_reader = csv.reader(f) for row in csv_reader: pass print(csv_reader.line_num) 

Это работает для csv и всех файлов, содержащих строки в ОС на Unix:

import os numOfLines = int(os.popen('wc -l < file.csv').read()[:-1]) 

Если файл csv содержит строку полей, вы можете вычесть ее из numOfLines выше:

numOfLines = numOfLines - 1 

Источник

Оцените статью