Требование: у меня есть папка с несколькими CSV-файлами. Мне нужно выполнить следующее:
- Сканирование входной папки на наличие всех файлов CSV (file1.csv, file2.csv ..... filen.csv и т. Д.) И выполните следующие действия
- Откройте первый файл csv (file1.csv) и сохраните заголовок файла в списке, а затем скопируйте весь контент (включая заголовок) файла file.csv и вставьте его в комбинированный .csv => Затем переместите file1.csv в Папка / done в родительской папке
- Перейти к следующему файлу file2.csv => Сравнить заголовок file2.csv с заголовком первого файла, чтобы убедиться, что они точно совпадают. Если заголовки совпадают, скопируйте содержимое (исключая заголовок) файла file2.csv и поместите в комбинированный файл .csv => Затем переместите файл file2.csv в папку / done в родительской папке. Если заголовок файла file2.csv не совпадает, исключите объединение этого файла, оставьте его в той же родительской папке и перейдите к следующему файлу для объединения
Я поместил примеры файлов по ссылке Папка gdrive с примерами файлов CSV
Я открыт для любого решения, будь то CSV или pandas, если оно делает то, что я хочу
В качестве отправной точки я изначально работал над сравнением заголовка, как показано ниже, который работает. Тем не менее, я не уверен, как двигаться дальше
Код:
import csv
def compare_two_csv_headers(csv_file1, csv_file2):
with open(csv_file1, newline='') as f:
reader = csv.reader(f)
frow1 = next(reader) # gets the first line
print(frow1)
with open(csv_file2, newline='') as f:
reader = csv.reader(f)
frow2 = next(reader) # gets the first line
print(frow2)
if frow1==frow2:
print('Same header')
else:
print('Different header')
csv_file1 = 'D:/2009/cm01JAN2009bhav.csv'
csv_file2 = 'D:/2009/cm01DEC2009bhav.csv'
compare_two_csv_headers(csv_file1, csv_file2)
Вот первые 10 строк из первого CSV-файла
SYMBOL,SERIES,OPEN,HIGH,LOW,CLOSE,LAST,PREVCLOSE,TOTTRDQTY,TOTTRDVAL,TIMESTAMP,
20MICRONS,EQ,46.5,47,45.7,46.05,46,46.55,7092,328975.25,31-DEC-2009,
3IINFOTECH,EQ,85.8,86.7,84.5,85.15,85.35,85.05,2423812,207760480.3,31-DEC-2009,
3MINDIA,EQ,1855.05,1879.9,1855.05,1865.75,1874.95,1850.45,85,158679.1,31-DEC-2009,
AARTIDRUGS,EQ,107.4,108.75,103.65,104.45,104.9,106.05,84012,8929759.4,31-DEC-2009,
AARTIIND,EQ,51,51.9,48.9,49.2,49.1,50.45,149365,7517110.3,31-DEC-2009,
AARVEEDEN,EQ,64,64.5,63.05,63.85,63.1,62.7,2172,138651.5,31-DEC-2009,
ABAN,EQ,1265,1297,1265,1283.65,1283.2,1260.05,1381290,1773221519.75,31-DEC-2009,
ABB,EQ,756.2,770.85,756.2,767.1,769.55,756.3,292376,223660807.4,31-DEC-2009,
ABCIL,EQ,85.4,89,84.9,86.85,86.95,84.7,59183,5170993.2,31-DEC-2009,