Sponsored Link

月別アーカイブ: 10月 2016

(73) WEBブラウザ経由でPythonスクリプトを実行

(73) WEBブラウザ経由でPythonスクリプトを実行

Pythonの高機能且つ高速な処理をWEBアプリで使用できればとっても心強い。
今回はWEBブラウザ経由(PHPページ経由)でPythonを使用してみる。

仕様

[Client側] パソコン上でCSVファイルを作成し、n行m列の数値データを書いておく。
[Client側] WEBブラウザで計算種別を合計値、平均値、最大値、最小値の中から選択する。
[Client側] WEBブラウザでCSVファイルをアップロードする。
[Server側] CSVファイルと計算種別を受け取る。
[Server側] PythonスクリプトにCSVファイルと計算種別を渡して実行する。
[Server側] Pythonから計算結果を受け取りHTMLにして出力する。
[Client側] 受け取ったHTMLを表示する。

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 value=2>平均値
  <option value=3>最大値
  <option value=4>最小値
</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 )