我只需要一种在运行中使用
简单地说,我需要处理上传的文件,而不将其保存在服务器上
使用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()