Сколько строк в 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 в цитированных строках.
Для файла, подобного этому, подсчет строк текста (как указано в новой строке) в файле даст слишком большой результат. Поэтому для точного подсчета вам нужно использовать 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.
Как я могу получить общее количество строк?
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, он читает весь файл, и указатель в файле меняет свою позицию
Я думаю, что мы можем немного улучшить лучший ответ, я использую:
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