Python将csv文件转换为有序的Excel表单

我在我的文件夹13 csv文件被命名为1,2,3到13(1.csv,2.csv,3csv等),我想将它们转换为单张excel文件(xlsx)从1开始直到13,但是按照数字顺序! 为此,我使用了这个:

import glob, csv, xlwt, os wb = xlwt.Workbook() for filename in glob.glob("data/*.csv"): (f_path, f_name) = os.path.split(filename) (f_short_name, f_extension) = os.path.splitext(f_name) ws = wb.add_sheet(f_short_name) spamReader = csv.reader(open(filename, 'r')) for rowx, row in enumerate(spamReader): for colx, value in enumerate(row): ws.write(rowx, colx, value) wb.save("compiled.xlsx") 

我唯一的问题是,我的输出:compiled.xlsx将不会有我想要的顺序(从1,2,3,4,5 … 13开始),它将以4,13,11开始, 12,5,6,8等等。 我有我的文件夹中的文件以所需的顺序,我如何可以更改我的代码,以获得正确的表格顺序,我使用python 3,感谢您的时间!

您可以按文件名将csv文件sorting到列表中,然后使用该列表。

我做了一个假设,所有文件名都可以转换为inttypes。

 files = [os.path.split(filename) for filename in glob.glob("csvs/*.csv")] ordered_files = sorted( files, key=lambda x: int(os.path.splitext(x[1])[0]) ) wb = xlwt.Workbook() for f_path, f_name in ordered_files: (f_short_name, f_extension) = os.path.splitext(f_name) ws = wb.add_sheet(f_short_name) spamReader = csv.reader(open(os.path.join(f_path, f_name), 'r')) for rowx, row in enumerate(spamReader): for colx, value in enumerate(row): ws.write(rowx, colx, value) wb.save("compiled.xlsx")