DjangoでInMemoryUploadedFileオブジェクトで来たCSVファイルを読み込む方法。
Djangoを使用してWebアプリを開発している場合、ファイルのアップロードや処理は頻繁に行う作業の一つです。CSVファイルを読み込む際には、InMemoryUploadedFileオブジェクトを使用することができます。InMemoryUploadedFileオブジェクトは、アップロードされたファイルをメモリ上に一時的に保存するためのもので、CSVファイルを扱う際には、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))まとめたら、こんな感じだけど、結構時間かかったのでメモ。また同じような事することも有るかと思うので。。






