【问题标题】:How should i open multiple csv files simultaneously in python in order to create a xlsx file我应该如何在 python 中同时打开多个 csv 文件以创建 xlsx 文件
【发布时间】:2019-10-09 23:11:00
【问题描述】:

我正在做一个将 .csv 文件转换为 .xlsx 的项目,我成功实现了代码,但我的要求是一次转换一个目录中的所有 .csv 文件,我有点困惑应该怎么做我这样做 请帮忙

我通过为文件提供不同的地址进行了尝试 但我希望它在循环中

filename = "C:\Python36\Form project\CI File\CCS DATA\ADD01.csv" filename2 ="C:\Python36\Form 项目\CI 文件\CCS DATA\ADD02.csv"

对于 glob.glob(os.path.join('.', filename)) 中的 csvfile:

now = datetime.now().strftime('%d-%m-%y-%H;%M;%S')

workbook = xlsxwriter.Workbook(' '+now+'.xlsx')

worksheet = workbook.add_worksheet()

with open(csvfile, 'rt') as f:
    reader = csv.reader(f)

    for r,row in enumerate(reader):

        print(row)

        r=r+11
        if r>=12:
            break


        #sheet.cell_value(0,r)
        for c, col in enumerate(row):

            c=c+1

            worksheet.write(r, c, col)

对于 glob.glob(os.path.join('.', filename2)) 中的 csvfile:

#now = datetime.now().strftime('%d-%m-%y-%H;%M;%S')

#workbook = xlsxwriter.Workbook(' '+now+'.xlsx')

#worksheet = workbook.add_worksheet()

with open(csvfile, 'rt') as f:
    reader = csv.reader(f)

    for r,row in enumerate(reader):

        print(row)

        r=r+12
        if r>=13:
            break

我通过为文件提供不同的地址进行了尝试 但我希望它在循环中

【问题讨论】:

  • 我相信您正在寻找的是遍历所有以 csv 扩展名结尾的文件。这篇文章可能对您有所帮助:stackoverflow.com/a/3964691/11400091
  • 您希望 csv 是在单独的工作表上还是在一个工作表上,并且 csv 格式是否相同?
  • 是的 csv 格式相同
  • 我想要在同一张纸上,我已经硬编码了

标签: python excel csv


【解决方案1】:

这可以帮助您,因为您可以遍历文件夹中的每个文件并检查它是否具有 .csv 结尾。

import os

INPUT_PATH = "C:\Python36\Form project\CI File\CCS DATA\"

for file in os.listdir(INPUT_PATH):
    if file.endswith('.csv') or file.endswith('.CSV'):
        INPUT_FILE = INPUT_PATH + file
        with open(INPUT_FILE, 'rt') as f:
             #your code here

我猜您想将所有 .csv 数据写入一个 .xslx 文件?否则添加如下内容:


import os

INPUT_PATH ="C:\Python36\Form project\CI File\CCS DATA\"

for file in os.listdir(INPUT_PATH):
    if file.endswith('.csv') or file.endswith('.CSV'):
        INPUT_FILE = INPUT_PATH + file
        workbook = INPUT_PATH + file[:-4] + 'xlsx'


        with open(INPUT_FILE, 'rt') as f:
             #your code here


编辑: 与您的其他信息在这里是另一个尝试帮助: (您可以分享您的 .csv 数据以查看您正在处理的内容吗?)

##create .xlsx-file##
now = datetime.now().strftime('%d-%m-%y-%H-%M-%S')
workbook = xlsxwriter.Workbook(directory+now+'.xlsx')

##iterate over .csv-files##
for filename in os.listdir(directory):
    if filename.endswith(".csv"):
        csvfile = os.path.join(directory, filename)
        ##add worksheet named as .csv-file##
        worksheet = workbook.add_worksheet('{csvfile}'.format(csvfile=filename))
        ##open and process .csv-file##
        with open(csvfile, 'rt') as f:
            reader = csv.reader(f)
            for r,row in enumerate(reader):
                for i in range(59):
                    r=r+i
                    if r>=(i+1):
                        break
                    for c, col in enumerate(row):
                        c=c+1
                        worksheet.write(r, c, col)
##don't forget to close your workbook afterwards##
workbook.close()

【讨论】:

  • 是的,我想在 1 个 .xlsx 文件中,我尝试了这段代码,但它只是访问 csv 文件,而不是将我需要的数据提取到 csv 中!
  • 那你就可以使用上面的第一种方法了。您只需在 with open(..) as f: 中添加数据提取代码
  • 现在,我的代码运行成功,但它没有进入我的 if 循环,直接结束而不保存我的文件
【解决方案2】:

现在,我的代码运行成功,但它没有进入我的 if 循环,直接结束而不保存我的文件,Pl。忽略缩进

for filename in os.listdir(directory):

if filename.endswith(".csv"):
    open(os.path.join(directory, filename))
    for csvfile in glob.glob(os.path.join('.', filename)):

        now = datetime.now().strftime('%d-%m-%y-%H;%M;%S')

        workbook = xlsxwriter.Workbook(' '+now+'.xlsx')

        worksheet = workbook.add_worksheet()

        with open(csvfile, 'rt') as f:
            reader = csv.reader(f)

else:
    for r,row in enumerate(reader):
        for i in range(59):
            r=r+i
            if r>=(i+1):
                #print(r)
                break


            #sheet.cell_value(0,r)
            for c, col in enumerate(row):

                c=c+1

                worksheet.write(r, c, col)

【讨论】:

    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    相关资源
    最近更新 更多