Мы находимся в переходном процессе от python 2.7 до python 3.5. Это изменение компании, и большинство наших текущих скриптов были написаны в 2.7 и никаких дополнительных библиотек. Я воспользовался дистрибутивом Anaconda, который мы используем, и уже изменил большинство наших скриптов с использованием модуля 2to3 или полностью переписал их. Я застрял на одном фрагменте кода, хотя и не писал, а оригинального автора здесь нет. Он также не предоставил комментарии, поэтому я могу только догадываться о целом сценарии. 95% скрипта работает правильно до конца, где после создания 7 файлов csv с разной анализируемой информацией у него есть настраиваемая функция для объединения файлов csv в рабочую книгу xls и каждой csv в качестве новой вкладки.Объединение нескольких файлов csv в одну книгу xls Python 3
import csv
import xlwt
import glob
import openpyxl
from openpyxl import Workbook
Parsefiles = glob.glob(directory + '/' + "Parsed*.csv")
def xlsmaker():
for f in Parsefiles:
(path, name) = os.path.split(f)
(chort_name, extension) = os.path.splittext(name)
ws = wb.add_sheet(short_name)
xreader = csv.reader(open(f, 'rb'))
newdata = [line for line in xreader]
for rowx, row in enumerate(newdata)
for colx, value in enumerate(row):
if value.isdigit():
ws.write(rowx, colx, value)
xlsmaker()
for f in Parsefiles:
os.remove(f)
wb.save(directory + '/' + "Finished" + '' + oshort + '' + timestr + ".xls")
Это было написано на всех языках python 2.7 и работает корректно, если я запустил его в python 2.7. Проблема заключается в том, что он выдает ошибку при запуске в python 3.5.
File "parsetool.py", line 521, in (module)
xlsmaker()
File "parsetool.py", line 511, in xlsmaker
ws = wb.add_sheet(short_name)
File "c:\pythonscripts\workbook.py", line 168 in add_sheet
raise TypeError("The paramete you have given is not of the type '%s'"% self._worksheet_class.__name__)
TypeError: The parameter you have given is not of the type "Worksheet"
Любые идеи относительно того, что необходимо сделать, чтобы исправить вышеуказанную ошибку? Iv'e попробовал несколько переписываний, но я получаю подобные ошибки или новые ошибки. Я рассматриваю возможность всего лишь вычислить наш новый метод для создания xls, возможно, pandas.
Спасибо за ответ. Решена проблема, заключающаяся в исправлении некоторых кодировок файлов csv. Кроме того, некоторые файлы должны были иметь определенную кодировку, отличную от рабочей книги, чтобы заставить скрипт функционировать. Совершенно странно, но он работает, и теперь у меня есть четыре функционирующих скрипта под графическим интерфейсом PyQt. Я, вероятно, добавлю панд, чтобы убедиться, что он будет работать в будущем. –
Эй @TobiasWright Есть ли способ опубликовать код здесь. Я пытаюсь следовать. Спасибо. – JPC
'NameError: name 'xlsxwriter' не определен'. Кроме того, кажется, что 'pandas' предполагает, что' openpyxl' доступен. Можете ли вы сделать этот ответ более полным? (Я начинаю с miniconda, если это отвечает, почему у меня нет всего установленного.) – r2evans