Подсчитывать строки каждого CSV-файла в папке

#python

#python

Вопрос:

как я могу подсчитать строки каждого CSV-файла в папке?

 with open('filename.csv', 'r', encoding="latin-1") as csvfile:
    readCSV=csv.reader(csvfile, delimiter=',')

row_count=sum(1 for row in readCSV)
print(row_count)
for row in readCSV:
   print(row[1])
  

Я пробовал это для одного файла, но я хочу сделать это для каждого файла, а их много..

 import os
a ="foldername"
os.listdir(a)
  

И я попробовал это, но я не знаю, как это происходит..
Я действительно новичок в python..

Большое спасибо.

Комментарии:

1. если только для подсчета строк вам не нужна библиотека csv. просто откройте файл с помощью readlines.

2. Вам не нужен csvreader, откройте файл с помощью with и выполните len( your_file.readlines() ) , минус 1 для заголовка

3. your_file — это мое имя файла, верно? Могу ли я использовать что-то вроде наклона для автоматической установки имен файлов? Понятия не имею..

4. @Torb вы можете получить доступ ко всем файлам, используя os.listdir(path) как я предложил в своем ответе ниже, приветствия

Ответ №1:

Предполагая, что файлы помещены в папку:

 import os
path = '/some/path/to/file'
for filename in os.listdir(path):
    with open(filename, 'r', encoding="latin-1") as fileObj:
        # -1 to exclude the header
        print("Rows Counted {} in the csv {}:".format(len(fileObj.readlines()) - 1, filename))  
  

ВЫВОД (протестирован):

 Rows Counted 198 in the csv celebList.xlsx:
Rows Counted 148 in the csv cel_lis.xls:
  

Комментарии:

1. @ChristophBurschka Действительно, исправлено. Спасибо!

Ответ №2:

Этот код должен делать

 import os
import glob

path = "/home/.."
os.chdir(path)
result = [i for i in glob.glob('*.{}'.format("csv"))]

for i in result:
   with open(i, 'r', encoding="latin-1") as csvfile:
    print(i, ": ", str(len(csvfile.readlines()) - 1))
  

Комментарии:

1. Я бы не рекомендовал использовать os.chdir(path) , когда вы можете передать полный путь, используя os.path.join

Ответ №3:

Если вам не нужно проверять содержимое CSV или иметь дело с крайними случаями (отбрасывая некоторое различное количество строк в качестве заголовков и т.д.), То вам вообще не нужно читать CSV. len(open(file).readlines()) подсчитает строки в каждом файле за вас.