烧瓶句柄通过csv模块上传了csv



简单地说,我需要处理上传的文件,而不将其保存在服务器上

使用open()在cli脚本中工作一切都很好,


使用带有通过ajax请求从数据发送的文件的烧瓶open()函数和stream.read()方法都没有帮助处理csv

open自身抛出异常

csv_f = open(request.files['csvfile'].stream, 'rb')
TypeError: expected str, bytes or os.PathLike object, not SpooledTemporaryFile

使用.read()我可以打印

csv_f = request.files['csvfile'].stream.read()
data = csv.reader(csv_f, delimiter = ',')
print(csv_f)
b'...'

但是迭代也抛出异常

for row in data:
_csv.Error: iterator should return strings, not int (did you open the file in text mode?)

我只需要一种在运行中使用csv模块处理csv文件的方法

我发现的问题

该文件将以二进制流而非普通文本的形式抛出请求

这就是为什么它有一个读取方法,但在itrating 时没有用处

我不得不使用.decode()像这个

request.files['csvfile'].stream.read().decode("utf-8")

而不是这个request.files['csvfile'].stream.read()

最新更新