【ハマり解決】PythonのflaskにおいてアップロードされたCSVファイルをpandasに展開する方法

この記事でわかること

・Pythonのflaskのノウハウが分かる

・アップロードされたCVSファイルをpandasに展開する方法がわかる

 

起きた問題

WEBサイト(flaskで作成)でアップロードされたファイルデータ(一時ファイル)を読み取って、

pandasに展開しようとしたらエラー(エラーの内容忘れた ^^;)が発生した。

 

そのときに書いたコードが以下の通り。

from flask import Flask, render_template, request
import pandas as pd
#Flaskオブジェクトの生成
app = Flask(__name__)


#ファイルのアップデートを読み込む
file = request.files['campaign_file']

#読み込んだデータを読み込み(ファイル形式はcsv)
uni_string = file.stream.read()     

#pandasに展開しようとしたがここでエラーが起きて停止した
df = pd.read_csv(uni_string, encoding='utf8')
                    

 

解決策

原因は、よくわかっていないが、

それを以下のように修正したら解決しました。

 

from flask import Flask, render_template, request
import pandas as pd
import io, pkgutil

#Flaskオブジェクトの生成
app = Flask(__name__)


#ファイルのアップロードを読み込む
file = request.files['campaign_file']

#読み込んだデータを読み込み(ファイル形式はcsv)
uni_string = file.stream.read()     

#この部分を修正
#BytesIO はインメモリーのバイナリストリーム
#この結果、CSVデータを正しく展開することができました
df = pd.read_csv(io.BytesIO(uni_string), encoding='utf8')

 

 

上記の結果から、アップロードされたCVSファイルを正しく読み込むには、以下の何れかの対応が必要になります。

・一時ファイルを、ファイルに保存してから、再び読み込む(効率悪い)

・先程のコードのようにBytesIOを使って読み込む。

 

以上、解決策でした。

めでたしめでたし

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア

 

最新情報をチェックしよう!