Время прочтения: 2 мин.
На первом шаге пройдемся по нашей папке (очень важно, чтобы все файлы, которые необходимо объединить, находились в одной папке) и запишем в список название файлов + путь. Это можно сделать с помощью 2 библиотек: os или glob.
- Библиотека os.
import pandas as pd
import os
my_list=[]
for root, dirs, files in os.walk('ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\***.xlsx'):
my_list.extend([os.path.join(root,file) for file in files if file.endswith('xlsx')])
print(my_list)
['ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file.xlsx',
'ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file2.xlsx',
'ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file3.xlsx',
'ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file4.xlsx',
'ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file5.xlsx',
'ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file6.xlsx']
Важно! При указании пути до папки ставить «\\».
file.endswith(`***`) используется для поиска, в круглых скобках можно указать любое расширение xlsx, xls, csv и т.д.
- Библиотека glob.
import glob
my_list=[]
my_list.extend(glob.glob('ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\***.xlsx')
print(my_list)
['ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file.xlsx',
'ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file2.xlsx',
'ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file3.xlsx',
'ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file4.xlsx',
'ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file5.xlsx',
'ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\file6.xlsx']
И в первом и во втором варианте результат получился одинаковый — список my_list, содержащий полный путь до каждого файла и его название.
Переходим к шагу 2.
Создаем DataFrame, в который поочередно будем записывать всю информацию, содержащуюся в каждом файле.
result=pd.DataFrame()
Пробегаемся по списку my_list, читаем файл и записываем его в созданный DataFrame.
for file in my_list:
df = pd.read_excel(file)
result=result.append(df)
Если же ваши выгрузки содержат информацию, на нескольких листах, то добавляем еще один цикл.
for file in my_list:
f = pd.ExcelFile(file)
for sheet in f.sheet_names:
df = pd.read_excel((file),sheet_name=sheet)
result=result.append(df)
pd.ExcelFile(file) позволяет собрать информацию о листах.
Шаг 3 и завершающий.
Сохраняем получившийся DataFrame в excel или же csv.
result.to_excel('result.csv')
result.to_csv('result.csv', sep = ';', encoding = 'cp1251')
Программа готова.
import pandas as pd
import os
import glob
#1 вариант
my_list=[]
for root, dirs, files in os.walk('ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\***.xlsx'):
my_list.extend([os.path.join(root,file) for file in files if file.endswith('xlsx')])
#2 вариант
my_list=[]
my_list.extend(glob.glob('ДИСК:\\Папка1\\Папка2\\***\\ПапкаN\\***.xlsx')
result=pd.DataFrame()
for file in my_list:
f = pd.ExcelFile(file)
for sheet in f.sheet_names:
df = pd.read_excel((file),sheet_name=sheet)
result=result.append(df)
result.to_excel('result.csv')
result.to_csv('result.csv', sep = ';', encoding = 'cp1251')
А как вы объединяете файлы? Делитесь опытом в комментариях.