Пакетное преобразование CSV в XLSX с сохранением структуры подпапок в python - PullRequest
0 голосов
/ 27 февраля 2020

Может кто-нибудь посоветовать, как можно пакетным образом конвертировать более 100 файлов CSV с разными схемами в отдельные файлы XLSX, сохраняя исходную структуру подпапок, используя Python? В двух словах, что мне нужно получить:

Folder:
  Subfolder 1:
  file.csv
  Subfolder 2:
  file2.csv
  ...
  Subfolder N:
  fileN.csv

Цель:

Folder:
  Subfolder 1:
  file.csv
  file.xlsx
  Subfolder 2:
  file2.csv
  file2.xlsx
  ...
  Subfolder N:
  fileN.csv
  fileN.xlsx

Имена файлов не одинаковы.

Я пробую приведенный ниже код, но это только преобразование файла в папке root.

for root, dirs, files in os.walk('.'):
    for file in files:
        for file in glob.glob(os.path.join('.', '*.csv')):
            wb = openpyxl.Workbook()
            ws = wb.active
            with open(os.path.join(file), 'r') as f:
                reader = csv.reader(f)
                for r, row in enumerate(reader, start=1):
                    for c, val in enumerate(row, start=1):
                        ws.cell(row=r, column=c).value = val
            wb.save(csvfile + '.xlsx')

1 Ответ

0 голосов
/ 27 февраля 2020

с учетом кода, я смог заставить его работать. Не самый последний, но работает:

for root, dirs, files in os.walk('.'):
    for file in files:
        if os.path.splitext(file)[-1] == ".csv":
            file_path = os.path.join(root, file)
            wb = openpyxl.Workbook()
            ws = wb.active
            with open(os.path.join(file_path), 'r') as f:
                reader = csv.reader(f)
                for r, row in enumerate(reader, start=1):
                    for c, val in enumerate(row, start=1):
                        ws.cell(row=r, column=c).value = val
            wb.save(file_path + '.xlsx')
...