Как я должен открыть несколько файлов CSV одновременно в Python, чтобы создать файл XLSX - PullRequest
0 голосов
/ 23 мая 2019

Я работаю над проектом по преобразованию файла .csv в .xlsx, я успешно реализовал код, но мое требование заключается в том, чтобы преобразовать все файлы .csv в каталог за раз, что я немного запутался, что как следует Я делаю это Просьба помочь

Я попробовал, указав другой адрес для файлов но я хочу, чтобы это было в цикле

filename = "C: \ Python36 \ Проект формы \ Файл CI \ CCS DATA \ ADD01.csv" filename2 = "C: \ Python36 \ Проект формы \ Файл CI \ CCS DATA \ ADD02.csv"

для csvfile в glob.glob (os.path.join ('.', Имя файла)):

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)

для csvfile в glob.glob (os.path.join ('.', Filename2)):

#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

Я попробовал, указав другой адрес для файлов но я хочу, чтобы это было в цикле

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Теперь мой код работает успешно, но он не входит в цикл 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)
0 голосов
/ 23 мая 2019

это может вам помочь, так как вы можете перебирать каждый файл в вашей папке и проверять, имеет ли он .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


EDIT: с вашей дополнительной информацией вот еще одна попытка помочь: (не могли бы вы поделиться своими .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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...