#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())
подсчитает строки в каждом файле за вас.