2017-08-14 17 views
1

私はWeb開発でかなり新しいですが、誰かがWebページ上の.pyスクリプトを実行するためのスクリプトのヘルプの正しい方向を教えてください。以下は私が使っているものです。私は、HTMLファイルとPHPファイルを作成する必要がありますか? もしそうなら、私を助けてください。私は内部のサーバーをXAMPP上でApacheと共に動かし、CGI、.pyスクリプトを実行するように設定しました。Webページからpythonスクリプトを実行するには?

作業の流れ:

<?php 
if(isset($_POST['UploadButton'])){ //check if form was submitted 

$target_dir = '/opt/lampp/htdocs/pic-el/Dump/'; 
$target_file = $target_dir . basename($_FILES["filepath"]["name"]); 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
move_uploaded_file($_FILES["filepath"]["tmp_name"], $target_file); 
} 
?> 

Pythonスクリプト:

#!/usr/bin/env python 

import CGIHTTPServer 
CGIHTTPServer.test() 
import os 
import urllib 
import cgi 
import webcolors 
import xlsxwriter 
from PIL import Image 

filename = "/home/Desktop/tess/test1" 

imageNameArray = [] 


def downloadfile(urlData): 
    urllib.urlretrieve(urlData[0], urlData[1]) 
    print " image downloaded: " + str(urlData[1]) 
    return 


# open file to read 
with open("{0}.csv".format(filename), 'r') as csvfile: 
    # iterate on all lines 
    i = 0 
    for line in csvfile: 
     splitted_line = line.split(',') 
     # check if we have an image URL 
     if splitted_line[1] != '' and splitted_line[1] != "\n": 
      # urllib.urlretrieve(splitted_line[1], '/home/tf_files/images/{0}.jpg'.format (splitted_line[0])) 
      imageNameArray.append(
       (splitted_line[1], '/home/Desktop/tess/images/{0}.jpg'.format(splitted_line[0]))) 
      print "Image added to list for processing for {0}".format(splitted_line[0]) 
      i += 1 
     else: 
      print "No result for {0}".format(splitted_line[0]) 

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' 

from multiprocessing import Pool 

processPool = Pool(5) 
processPool.map(downloadfile, imageNameArray) 

# Create a workbook and add a worksheet. 
workbook = xlsxwriter.Workbook('output1.xlsx') 
worksheet = workbook.add_worksheet() 
# Start from the first cell. Rows and columns are zero indexed. 
row = 0 
col = 0 

# search for files in 'images' dir 
files_dir = os.getcwd() + '/images' 
files = os.listdir(files_dir) 


def closest_colour(requested_colour): 
    min_colours = {} 
    for key, name in webcolors.css3_hex_to_names.items(): 
     r_c, g_c, b_c = webcolors.hex_to_rgb(key) 
     rd = (r_c - requested_colour[0]) ** 2 
     gd = (g_c - requested_colour[1]) ** 2 
     bd = (b_c - requested_colour[2]) ** 2 
     min_colours[(rd + gd + bd)] = name 
    return min_colours[min(min_colours.keys())] 


def get_colour_name(requested_colour): 
    try: 
     closest_name = actual_name = webcolors.rgb_to_name(requested_colour) 
    except ValueError: 
     closest_name = closest_colour(requested_colour) 
     actual_name = None 
    return actual_name, closest_name 


for f in files: 
    if f.lower().endswith(('.png', '.jpg', '.jpeg')): 
     image_path = files_dir + '/' + f 
     im = Image.open(image_path) 
     n, cl = max(im.getcolors(im.size[0] * im.size[1])) 
     requested_colour = cl 
     actual_name, closest_name = get_colour_name(requested_colour) 


     width = im.size 
     if width < (500, 500): 
      worksheet.write(row, 4, "False") 
     else: 
      worksheet.write(row, 4, "True") 

     print image_path 
     print cl 
     print width 
     print "Actual colour name:", actual_name, ", closest colour name:", closest_name 


     worksheet.write_string(row, 1, image_path) 
     worksheet.write(row, 3, closest_name) 
     row += 1 





workbook.close() 
+0

https://stackoverflow.com/questions/9398560/how-do-i-run-a-python-script-on-my- web-server – MacBooc

+0

また、https://www.djangoproject.comを見て、WebサーバーとしてDjangoを使用することもできます。 –

答えて

0

の.pyスクリプトの下に実行する

アップロード>ボタン>

アップロードスクリプト(PHP)をダウンロードWebページで.pyを実行することはできません。Pythonはサーバーサイドプログラミングのため、uのみをサーバー上で実行できます。 (uはXAMPPを使用してrをするので。)しかし、あなたはPHPからPythonスクリプトを実行することができます 例 -

<?php 
    $output = exec('./filename.py'); 
?> 
+0

上記を試しても何も動作していないようです。ページの表示エラーはどうですか? – Shri

+0

は$出力をエコーアウトします。 exec( './ filename.py')を実行すると、pythonの出力が返されます。 を確認してください。 http://php.net/manual/en/function.exec.php –

+0

注意:未定義の定数出力を使用する - 3行目の/opt/lampp/htdocs/IMG/ne.phpで '出力'と仮定した場合 出力 - それは表示されているものです。それが意味することを理解できません – Shri

0

をあなたが別々のphpとhtmlファイルを作成する必要はありません。

まず、サーバはバックのapache2に行くとき

sudo apt-get install libapache2-mod-wsgi

(それはWSGIとapache2のを接続している。)

第二には、設定ファイルと

移動を作成する必要があります構成ファイルをDocument_Rootに設定します。

ex> server.conf 

WSGIScriptAlias /test /var/www/wsgi/main.py 

MainOption |接続するアドレス| Pythonファイルの場所

第3に、apache2サービスを再起動します。

EXAMPLE_CODES

main.py

server.conf

+0

私はubuntuには、document_rootは、Apacheのhtdocフォルダ内のフォルダですか? – Shri

+0

@Shriはいhtdocsまたは/ var/www/htmlフォルダにあります。 –

+0

クール...チェクして元に戻ります。ありがとうございます – Shri

関連する問題