Python 将 csv 文件转换为有序文件 excel sheet
Python convert csv files to a ordered excel sheet
我的文件夹中有 13 个名为 1、2、3 到 13 的 csv 文件(1.csv、2.csv、3csv 等等),我想将它们转换为单个 excel 文件 (xlsx) 在 sheet 中组织,从 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 不会按我想要的顺序包含 sheet(从 1,2,3,4,5 ...13 开始) ), 它将以 4,13,11,12,5,6,8 等开头。我的文件夹中的文件按所需顺序排列,如何更改我的代码以获得正确的 sheet 排序,我正在使用 python 3,感谢您抽出时间!
您可以按文件名将 csv 文件排序到列表中,然后改用该列表。
我假设所有文件名都可以转换为 int
类型。
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")
我的文件夹中有 13 个名为 1、2、3 到 13 的 csv 文件(1.csv、2.csv、3csv 等等),我想将它们转换为单个 excel 文件 (xlsx) 在 sheet 中组织,从 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 不会按我想要的顺序包含 sheet(从 1,2,3,4,5 ...13 开始) ), 它将以 4,13,11,12,5,6,8 等开头。我的文件夹中的文件按所需顺序排列,如何更改我的代码以获得正确的 sheet 排序,我正在使用 python 3,感谢您抽出时间!
您可以按文件名将 csv 文件排序到列表中,然后改用该列表。
我假设所有文件名都可以转换为 int
类型。
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")