Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将csv批量转换为excel_Python_Python 3.x_Csv_Xlsxwriter_Bulk Load - Fatal编程技术网

Python 将csv批量转换为excel

Python 将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)

我们已经编写了一个代码,但它不能很好地工作,它只转换一列或更少。此过程接收文件夹,并迭代所有.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) 
    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”。