【问题标题】:Convert multiple csv files to Excel files?将多个 csv 文件转换为 Excel 文件?
【发布时间】:2017-12-22 21:33:31
【问题描述】:

在 Python 2.7 中,我有很多要转换为 Excel 的 csv 文件。 csv 文件的名称为abcd1.csvabcd2.csv 等。 我想将它们转换为abcd1.xlsabcd2.xls 等等。 虽然我可以在一个文件上执行此操作,但我不知道如何在多个文件上执行此操作。

这是我目前使用的功能:

from openpyxl import Workbook
import csv

wb = Workbook()
ws = wb.active
file_name = "COUNT16_DISTRIBUTION" + str(count3*1) + ".csv"
with open(file_name, 'r') as f:
    for row in csv.reader(f):
        ws.append(row)
wb.save()

file_name 可以在 while 循环中使用,我可以浏览每个 csv 文件,但我不知道如何将它们保存为 .xls

【问题讨论】:

  • superuser.com/questions/301431/… 能完成这项工作吗?
  • 另一种解决方案是使用pandas
  • 将你的代码变成一个函数,并使用glob.glob()os.listdir() 来确定你需要传递给新函数的文件。
  • @hennich,我检查了链接-显然他们正在将目录中的所有 csv 文件转换为单个 xls 文件

标签: python excel python-2.7 csv openpyxl


【解决方案1】:

这是一个熊猫的例子:

import pandas as pd
import os

# Create function that converts csv 2 excel
def csv2excel(filepath, sep=','):
    df = pd.read_csv(filepath, sep=sep)
    newpath = os.path.splitext(filepath)[0] + '.xlsx'
    df.to_excel(newpath, index=False)

# Loop through files and call the function
for f in os.listdir('.'):
    if f.endswith('.csv') and f.startswith('abcd'):
        csv2excel(f)

【讨论】:

  • 在 if 循环中,如果 ii 有很多 csv 文件,我该如何替换 'f.endswith' 以获取多个 csv 文件的名称?有很多 csv 文件,但我不想触摸所有文件。我只想触摸具有给定名称的那些。我正在尝试 filename = "COUNT16_DISTRIBUTION" + str(count3*1) + ".csv" 然后在 for 循环中我递增并检查目录中的下一个文件。
  • 有一个模式 abcd1.csv、abcd2.csv、abcd3.csv 等等这是模式,我想将它保存为 abcd1.xls、abcd2.xls 等。在我的初始代码中我能够做到,但是当我打开 xls 文件时它会损坏。
  • @anvinder 如何添加f.startswith('abcd'),请参阅编辑后的代码。
  • 我尝试了startswith,它给出了一个错误:“pandas.errors.EmptyDataError: No columns to parse from file”:df = pd.read_csv(filepath, sep=sep)跨度>
  • 通过 Pandas 从 CSV 转换为 Excel 并不是特别可取的,因为这意味着从行到列再到行。
猜你喜欢
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多