csv文件我可以这样写代码,已测试没有问题。
但是execl文件用TextIOWrapper好像不行。
if form.validate_on_submit():
if request.method == 'POST':
for file in request.files.getlist("files"):
if file:
csvfile = io.TextIOWrapper(file.stream, encoding='gbk')
reader = csv.reader(csvfile)
for line in reader:
temp = line[0]
然而我pandas读取excel的时候:
form = ShopDataForm()
if form.validate_on_submit():
if request.method == 'POST':
file = request.files['files']
execlfile = io.TextIOWrapper(file.stream)
taxidata_from_excel = pd.read_excel(execlfile, header=0, encoding='gbk')
报错:
builtins.UnicodeDecodeError
UnicodeDecodeError: 'gbk' codec can't decode byte 0xba in position 22: illegal multibyte sequence
编码这里我换了gbk,utf-8都不行
但是当我尝试着本地读取的话,简单一句就能成功读取了。。
temp=pd.read_excel("1.xls")
所以到底是哪里出了问题?
.xls
不是文本文件, 设置encoding应该是无效的。老老实实等文件下载完,再 pd.read_excel()
read_excel(
io
)io
可以是 url、ftp 之类的资源定位符。如果你知道
.xls
的位置,可以直接打开。试一下,直接 pd.read_excel(file) 或 (file.stream)