将 CSV 批量转换为 XLSX,在 python 中保留子文件夹结构

Batch convert CSV to XLSX keeping subfolder structure in python

有人可以告诉我如何使用 Python 将 100 多个具有不同架构的 CSV 文件批量转换为保持原始子文件夹结构的单个 XLSX 文件吗?简而言之,我需要得到什么:

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

文件名不统一

我正在尝试下面的代码,但它只转换根文件夹中的文件。

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')

调整代码,我能够让它工作。不是最整洁的,但有效:

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')