Я хотел бы преобразовать все файлы CSV в каталоге в файлы XLS. Ник Т разместил этот код здесь Как пакетно конвертировать .csv в .xls/xlsx

import os
import glob
import csv
import xlwt # from http://www.python-excel.org/

for csvfile in glob.glob(os.path.join('.', '*.csv')):
    wb = xlwt.Workbook()
    ws = wb.add_sheet('data')
    with open(csvfile, 'rU') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader):
            for c, val in enumerate(row):
                ws.write(r, c, val)
    wb.save(csvfile + '.xls')

Однако, когда я запускаю это, я получаю сообщение об ошибке из последней строки.

UnicodeDecodeError: кодек «ascii» не может декодировать байт 0xef в позиции 0: порядковый номер не в диапазоне (128)

Кто-нибудь знает, как я могу избавиться от этого? Я работаю в терминале на Mac.

1 ответ1

0

Я обновил этот код, чтобы он работал на python 3.5, вытащив из цикла две строки (wb = xlwt.Workbook () и wb.save («output.xls») были внутри цикла).

 import os
 import glob
 import csv
 import xlwt
 wb = xlwt.Workbook() # put the xlwt out of the loop 
 for csvfile in glob.glob(os.path.join('.', '*.csv')):
         fpath = csvfile.split("/", 1)
         fname = fpath[1].split(".", 1)
         ws = wb.add_sheet(fname[0])
         with open(csvfile, 'r') as f:
            reader = csv.reader(f)
            for r, row in enumerate(reader):
                for c, col in enumerate(row):
                    ws.write(r, c, col)

 #Save the results once the loop is done
 wb.save('output.xls')

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .