Чтобы перебирать имена файлов вы можете использовать подобный метод, как ответил here, используя Glob:
import glob
import os
os.chdir("/mydir")
for files in glob.glob("*.csv"):
print files
Затем, чтобы добавить имя элемента в заголовке, вы можете напечатать все строки CSV-файлов построчно , Если строка является заголовком, затем напечатайте имя члена в той же строке, что и заголовок. (Это не реальный код, но вы можете получить точку)
for files in glob.glob("*.csv"):
for lines in files:
if line == header:
print member,line
else:
print line
Чтобы разбить файл CSV и использовать только имя элемента (слегка модифицирована таким образом, чтобы не иметь дефис)
'Votes-[member name]-(2010-2014)-[download-time].csv'.split('-')[1]
UPDATE для Баш решения: Вы можете сохранить этот текст и запустить его из терминала (см instructions здесь для Mac)
Генерация CSV файлов (не обязательно)
cat <<"EOF" > 1.csv
1,2,3
4,5,6
EOF
cat <<"EOF" > 2.csv
a,b,c
d,e,f
EOF
Parse CSV-файлы - этот скрипт принимает все файлы CSV и записывает их имя в качестве первого столбца. Он также помещает их в один файл (обратите внимание, что я тестировал на debian linux, а не на mac).
rm -f all.csv
for fyle in *.csv ; do
echo | awk -v f=$fyle '{ print f","$0 }' $fyle >> all.csv
done
exit 0
ВТОРАЯ UPDATE: Если вы хотите удалить дубликаты заголовков, самый простой способ из оболочки использовать «Grep -v», который выбирает все строки, которые не соответствуют. Вы можете выбрать общую строку, которая существует только в заголовке.
head -1 all.csv > nohead.csv # add one header line
grep -v "header string" all.csv >> nohead.csv # add rest of rows, with no headers
Спасибо, я попробую это. Я нахожусь на Mac, если это имеет значение. – cassidycodes
Я добавил решение, используя оболочку bash. – philshem
Да, вот что я ищу! Есть ли способ включать только имя участника, а не целое имя файла? – cassidycodes