我使用Django模块django-chunked-upload来接收可能很大的CSV文件。我可以假设csv的格式是正确的,但是我不能假设定界符是什么。在
上传完成后,返回一个UploadedFile对象。我需要验证上传的CSV中是否包含正确的列,以及每列中的数据类型是否正确。在
用csv.reader()
加载文件无效:
reader = csv.reader(uploaded_file)
next(reader)
>>> _csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
这可能是因为uploaded_file.content_type
和{None
的形式出现的。在
我想出了一个相当不雅观的解决方案来获取标题并迭代行:
^{pr2}$我还考虑过尝试加载实际保存的文件的路径:
path = #figure out the path of the temp file
f = open(path,"r")
reader = csv.reader(f)
但我无法从UploadedFile对象获取临时文件路径。在
理想情况下,我想从UploadedFile对象创建一个普通的读取器或DictReader,但它似乎在逃避我。有人有什么想法吗?-谢谢
答案在于chunked_upload/模型.py其中有一行:
因此,在创建文件模型时,可以选择使用
^{pr2}$mode='r'
打开文件:这允许您获取返回的UploadedFile实例并将其解析为csv:
相关问题 更多 >
编程相关推荐