我們正在從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,可能是熊貓。
感謝您的回覆。真正解決了這個問題的是修復了一些csv文件的編碼。最重要的是,一些文件必須具有與工作簿不同的特定編碼才能使腳本正常工作。完全奇怪,但它的工作原理,現在我有四個功能腳本全部在PyQt GUI下。我可能會添加熊貓以確保它能在將來工作。 –
嗨@TobiasWright有沒有辦法可以在這裏發佈代碼。我正在嘗試跟蹤。謝謝。 – JPC
'NameError:name'xlsxwriter'未定義'。另外,似乎'pandas'假設'openpyxl'可用。你能否讓這個答案更完整? (我是從miniconda開始的,如果這就是爲什麼我沒有安裝所有東西的原因。) – r2evans