慕碼人8056858
2021-03-28 15:15:39
我是python的新手,我正在嘗試使用下面顯示的代碼來執(zhí)行上面的標題所說的。它一直運行到我要求保存xls輸出的地步。任何幫助將不勝感激。import globimport csvimport xlwtfor filename in glob.glob("C:\xxxx\*.txt"): wb = xlwt.Workbook() sheet = wb.add_sheet('sheet 1') newName = filename spamReader = csv.reader(open(filename, 'rb'), delimiter=';',quotechar='"') for rowx, row in enumerate(spamReader): for colx, value in enumerate(row): sheet.write(rowx, colx, value) wb.save(newName + ".xls")print "Done"Traceback (most recent call last):File "C:/Users/Aline/Desktop/Python_tests/1st_trial.py", line 13, in <module>wb.save("C:\Users\Aline\Documents\Data2013\consulta_cand_2010\newName.xls")File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 662, in savedoc.save(filename, self.get_biff_data())File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 637, in get_biff_datashared_str_table = self.__sst_rec()File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 599, in __sst_recreturn self.__sst.get_biff_record()File "C:\Python27\lib\site-packages\xlwt\BIFFRecords.py", line 76, in get_biff_recordself._add_to_sst(s)File "C:\Python27\lib\site-packages\xlwt\BIFFRecords.py", line 91, in _add_to_sstu_str = upack2(s, self.encoding)File "C:\Python27\lib\site-packages\xlwt\UnicodeUtils.py", line 50, in upack2us = unicode(s, encoding)UnicodeDecodeError: 'ascii' codec can't decode byte 0xc7 in position 4: ordinal not in range(128)
3 回答

烙印99
TA貢獻1829條經(jīng)驗 獲得超13個贊
我相信,您需要為輸出電子表格設(shè)置編碼。您需要知道該文件正在使用什么編碼。csv模塊不直接支持unicode,但是[8-bit-clean][1]它僅適用于大多數(shù)西方語言。
在不知道文本文件的編碼是什么的情況下,您有兩個選擇。選項1是根據(jù)python使用本地編碼:
>>> import locale
>>> lang_code, encoding = locale.getdefaultlocale()
^^請小心使用getdefaultlocale()。該文檔指出,編碼可能為None。
或者只是回退到UTF8,然后交叉手指:D。
>>> encoding = 'UTF8'
>>> workbook = xlwt.Workbook(encoding=encoding)

人到中年有點甜
TA貢獻1895條經(jīng)驗 獲得超7個贊
您沒有轉(zhuǎn)義文件名。例如,在Python字符串"consulta_cand_2010\newName.xls"
具有"\n"
在中間,這是最終的行的字符---一個文件名無效!
在Windows中,你需要編寫包含文件名的文本字符串"C:\\Like\\This"
或者"C:/Like/This"
甚至r"C:\Like\This"
。
添加回答
舉報
0/150
提交
取消