23,766 views
この記事は最終更新から 1350日 が経過しています。
Pythonの高機能且つ高速な処理をWEBアプリで使用できればとっても心強い。
今回はWEBブラウザ経由(PHPページ経由)でPythonを使用してみる。
1. 仕様
[Client側] パソコン上でCSVファイルを作成し、n行m列の数値データを書いておく。
[Client側] WEBブラウザで計算種別を合計値、平均値、最大値、最小値の中から選択する。
[Client側] WEBブラウザでCSVファイルをアップロードする。
[Server側] CSVファイルと計算種別を受け取る。
[Server側] PythonスクリプトにCSVファイルと計算種別を渡して実行する。
[Server側] Pythonから計算結果を受け取りHTMLにして出力する。
[Client側] 受け取ったHTMLを表示する。
2. プログラム作成
index.php
<!DOCTYPE html> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=utf-8" /> <TITLE>サンプル</TITLE> </HEAD> </BODY> <?php $cmd = (isset($_POST['cmd']))? $_POST['cmd'] : 0; if($cmd > 0){ if(is_uploaded_file($_FILES['upfile']['tmp_name'])){ move_uploaded_file($_FILES['upfile']['tmp_name'], 'tmp.csv'); exec("python csv_calc.py tmp.csv $cmd", $resp, $code); echo $resp[0]; unlink('tmp.csv'); } } ?> <hr /> <form enctype="multipart/form-data" action="./" method=post> <input type="file" name="upfile"><br /> <select name="cmd"> <option value="1">合計値</option> <option value="2">平均値</option> <option value="3">最大値</option> <option value="4">最小値</option> </select> <input type="submit" value="計算実行"> </form> </BODY> </HTML>
csv_calc.py (Pythonスクリプトファイル)
import sys import numpy as np #--------------------------------- def calc_csv( fpath_csv, cmd ): data = np.loadtxt( fpath_csv, delimiter=',' ) if cmd == 1: ret = data.sum() elif cmd == 2: ret = data.mean() elif cmd == 3: ret = data.max() elif cmd == 4: ret = data.min() else: print "invalid command" ret = 0 return ret #--------------------------------- # argv[1] : file path # argv[2] : command 1:sum, 2:average, 3:max, 4:min if __name__ == '__main__': ary_argv = sys.argv fpath = ary_argv[1] cmd = int(ary_argv[2]) print calc_csv( fpath, cmd )
3. 参考
次の投稿 (74) WEBブラウザ経由でPythonスクリプトを実行#2 では、indexページ自体を Pythonで書く方法について記している。そちらを先に投稿すべきだったか…