python - 在 Django 中解析和处理 CSV
问题描述
提前道歉,因为我是 Django 新手(而且我还必须更新我的 Python 技能)。我正在尝试做一个简单的示例,通过表单上传文件,然后在终端中打印行(作为进行一些实际处理之前的测试)。我的 views.py 包含以下内容:
def upload_csv(request):
if "GET" == request.method:
return render(request, "portal/csvupload.html")
csv_file = request.FILES["csv_file"]
handle_files(csv_file)
return HttpResponseRedirect(reverse("portal:csvupload"))
def handle_files(csvfile):
csv_reader = csv.reader(csvfile)
for line in csv_reader:
print(line)
现在这会返回一条错误消息,说“预期的 str、字节或 os.PathLike 对象,而不是 InMemoryUploadedFile ”,我不确定基于错误消息的代码有什么问题?从 Python 的角度来看,我认为它看起来不错,但也许它与重定向有关?欣赏所有答案
解决方案
request.FILES["csv_file"]
正在返回一个InMemoryUploadedFile
对象,csv.reader
但不知道如何处理这样的对象。我相信你需要调用对象的read
方法:handle_files(csv_file.read())
. 请注意文档中的警告:“使用此方法要小心:如果上传的文件很大,如果您尝试将其读入内存,它可能会使您的系统不堪重负。您可能希望使用 chunks() 代替;见下文。”
推荐阅读
- model - 哪个型号更好?BIC值如何解释
- mysql - 将 tableA 中的选择查询结果添加为 tableB 中的新列
- node.js - 带有猫鼬的nodejs - 使用多个对象列表更新对象数组
- python - 如何从现有模型中图层的入站节点中删除 training=True?
- python - 如何使用相对导入启动 vscode 调试器?(Python)
- java - 按值分组地图列表并通过排序合并为分组列表
- java - @Value 属性在 spring 组件中返回 null
- function - 将打印文本的函数作为参数传递,在 Haskell 中的新状态后执行它
- symfony5 - KnpLabs/KnpSnappyBundle:HostNotFoundError (Symfony 5)
- google-apps-script - 如何访问我的谷歌应用脚本网络应用?