DjangoでInMemoryUploadedFileからCSVファイルを読み込む

DjangoでInMemoryUploadedFileオブジェクトで来たCSVファイルを読み込む方法。

DjangoでInMemoryUploadedFileオブジェクトで来たCSVファイルを読み込みます✋

ソース

まずはロジックを

csv_file = request.FILES.get("file")

# 行でループ
for line in csv_file:
  line_count+= 1

  if line_count == 1:
    continue

  try:
    line_list = str(line.decode()).split(",")
  except UnicodeDecodeError:
    line_list = str(line.decode('cp932')).split(",")

  # 列でループ
  for columun in line_list:
    print(str(columun))

解説

リクエストからファイルを読み込み

csv_file = request.FILES.get("file")

読み込んだCSVファイルを行でループ。

一行目はタイトル行の場合を想定して、初回ループの際はスキップしています。

# 行でループ
for line in csv_file:
  line_count+= 1

  if line_count == 1:
    continue

テキストとして読めるように、デコード&カンマ区切りを配列に格納

文字コードでエラーになった場合は、’cp932’でデコードします。

try:
  line_list = str(line.decode()).split(",")
except UnicodeDecodeError:
  line_list = str(line.decode('cp932')).split(",")

更に列でループ

今度はデコード済みなので、そのままprintできます。

# 列でループ
for columun in line_list:
  print(str(columun))

まとめたら、こんな感じだけど、結構時間かかったのでメモ📝

また同じような事することも有るかと思うので😀