この記事でわかること
・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万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |