我发现这个有用的脚本可以将.txt文件列表转换为xls文件。我仍然是Python新手,在解决脚本中的错误时遇到了一些麻烦。使用的脚本如下:
mypath = "I give my path here"
from os import listdir
from os.path import isfile, join
textfiles = [ join(mypath,f) for f in listdir(mypath) if isfile(join(mypath,f)) and '.txt' in f]
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
import xlwt
import xlrd
style = xlwt.XFStyle()
style.num_format_str = '#,###0.00'
for textfile in textfiles:
f = open(textfile, 'r+')
row_list = []
for row in f:
row_list.append(row.split(';'))
column_list = zip(*row_list)
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('Sheet1')
i = 0
for column in column_list:
for item in range(len(column)):
value = column[item].strip()
if is_number(value):
worksheet.write(item, i, float(value), style=style)
else:
worksheet.write(item, i, value)
i+=1
workbook.save(textfile.replace('.txt', '.xls'))
该脚本为前10个文件生成的输出文件均小于1MB。脚本失败,导致为〜42MB的文件产生以下错误消息:
File
"C:\Users\me\AppData\Local\Continuum\anaconda3\lib\site-packages\xlwt\Row.py",
line 37, in __init__
raise ValueError("row index was %r, not allowed by .xls format" % rowx)
ValueError: row index was 65536, not allowed by .xls format
有人可以协助我解决错误吗?
答案 0 :(得分:1)
您收到错误消息,因为文件格式.xls
仅允许65536行(索引从0开始)。
您应该考虑使用.xlsx
格式,或者如果需要向后兼容,或者如果行数超过65536,则可以使用.xlsx
作为“后备”格式,或者将输出分成多个文件。