Python 将csv批量转换为excel
我们已经编写了一个代码,但它不能很好地工作,它只转换一列或更少。此过程接收文件夹,并迭代所有.csv文件,将其转换为.xlsxPython 将csv批量转换为excel,python,python-3.x,csv,xlsxwriter,bulk-load,Python,Python 3.x,Csv,Xlsxwriter,Bulk Load,我们已经编写了一个代码,但它不能很好地工作,它只转换一列或更少。此过程接收文件夹,并迭代所有.csv文件,将其转换为.xlsx import csv import glob from openpyxl import Workbook from pathlib import Path import os def convert_csv_to_xlsx(arg1): wb = Workbook() sheet = wb.active p = Path(arg1)
import csv
import glob
from openpyxl import Workbook
from pathlib import Path
import os
def convert_csv_to_xlsx(arg1):
wb = Workbook()
sheet = wb.active
p = Path(arg1)
CSV_SEPARATOR = ","
for fname in glob.glob(arg1):
p1=Path(fname)
if os.path.exists(fname):
with open(fname) as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
for idx, val in enumerate(col.split(CSV_SEPARATOR)):
cell = sheet.cell(row=r+1, column=idx+1)
cell.value = val
print('Se ha creado el archivo: ' + (str(p.parent) + str(p.root) + str(p1.stem) + ".xlsx"))
wb.save(str(p.parent) + str(p.root) + str(p1.stem) + ".xlsx")
convert_csv_to_xlsx(r'C:\ysingh\sacoop\dscoopb\coopac-e\201812-e\*.csv')
@凯西的回答应该被接受,因为他显然提出了同样的建议 使用
pandas
,单独获得的抽象值得转换。您正在使用的嵌套循环可能是问题的根源
您的代码变成:
import pandas as pd
def convert_csv_to_xlsx(arg1):
for fname in glob.glob(arg1):
pd.read_csv(fname).to_excel("{}.xlsx}.format(fname))
%timeit-显示1MB CSV文件的以下内容
每个回路992 ms±48.1 ms(7次运行的平均值±标准偏差,每个回路1次)
@凯西的回答应该被接受,因为他显然提出了同样的建议 使用
pandas
,单独获得的抽象值得转换。您正在使用的嵌套循环可能是问题的根源
您的代码变成:
import pandas as pd
def convert_csv_to_xlsx(arg1):
for fname in glob.glob(arg1):
pd.read_csv(fname).to_excel("{}.xlsx}.format(fname))
%timeit-显示1MB CSV文件的以下内容
每个回路992 ms±48.1 ms(7次运行的平均值±标准偏差,每个回路1次)
稍微改进了上面发布的代码,使用f-string,路径和结果文件是x.xlsx(而不是x.csv.xlsx)
稍微改进了上面发布的代码,使用f-string,路径和结果文件是x.xlsx(而不是x.csv.xlsx)
您是否可以使用pandas将数据加载为数据框,然后将其另存为excel?您是否可以使用pandas将数据加载为数据框,然后将其另存为excel?这是一种魅力。请注意,您还必须导入熊猫使用的“openpyxl”。我的意思是,除了“熊猫”,您的虚拟环境还必须导入“openpyxl”。这是一种魅力。请注意,您还必须导入pandas使用的“openpyxl”。我的意思是,除了“pandas”,您的虚拟环境还必须导入“openpyxl”。