web-dev-qa-db-ja.com

htmlボタンからpythonスクリプトを実行するにはどうすればよいですか?

好奇心から、コンピューターに保存した多くのpythonスクリプトを作成しました。ボタンが1つしかないhtmlファイルを作成しました。代わりに、ターミナルにアクセスしてpython <path to script>、ボタンをクリックすると、pythonスクリプト。これは可能/どうすればできますか?

たとえば、MYSCRIPT.pyを実行するスクリプトを呼び出します。私は少し研究をしましたが、有望なものは何もありませんでした。私は次のコードが間違っていることを知っていますが、出発点はここの私のhtmlファイルだけです。

<!DOCTYPE html>
<html>
    <body>
        <head>

           <input type="button" id='script' name="scriptbutton" value=" Run Script " onclick="exec('python MYSCRIPT.py');">

        </head>
    </body>
</html>
8
Justin Smith

あなたがHTMLページ内でこれを完了する方法を求めたので、私はこれに答えています。これに伴う深刻な警告や影響について言及する必要はないと思います..あなたの_.py_スクリプトのセキュリティを私よりもよく知っていると信じています:-)

jQueryライブラリーの.ajax()関数を使用します。これにより、Pythonスクリプトを呼び出すことができますスクリプトが一般にアクセス可能なhtmlディレクトリにある限り ...これは、セキュリティ上の注意事項に留意する部分であると述べました...

_<!DOCTYPE html>
<html>
  <head>    
  </head>
  <body>
    <input type="button" id='script' name="scriptbutton" value=" Run Script " onclick="goPython()">

    <script src="http://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>

    <script>
        function goPython(){
            $.ajax({
              url: "MYSCRIPT.py",
             context: document.body
            }).done(function() {
             alert('finished python script');;
            });
        }
    </script>
  </body>
</html>
_

さらに..スクリプトを実行するには、_www-data_ユーザーなどに適切なアクセス許可が必要になることに注意してください... A chmod、および/またはchownが必要になる場合があります。

4
Zak

これには、バックエンドWebサイトの言語の知識が必要です。

幸いなことに、Pythonの Flask Library は、当面のプロジェクトに適したバックエンド言語です。

別のスレッドから この回答 を確認してください。

1
Michael Dennis

それを行うにはさまざまな方法がありますが、セキュリティの平和を念頭に置いた非常に簡単な手法です


1。最初にインストールする必要がありますFlask
pip install flask
コマンドプロンプトで、python microframework、それを学ぶために別の事前知識が必要になることを恐れないでください、それは本当に簡単でほんの数行ですコードのFlask初心者でもすぐに学ぶことができます。こちらも私が学んだチュートリアルです Flask Tutorial for beginner(YouTube)

2。新しいフォルダーを作成する
-最初のファイルはserver.py

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
  return render_template('index.html')

@app.route('/my-link/')
def my_link():
  print ('I got clicked!')

  return 'Click.'

if __name__ == '__main__':
  app.run(debug=True)

-2nd前のフォルダー内に別のサブフォルダーを作成し、templatesという名前を付けます。ファイルはHTMLファイルになります
index.html

<!doctype html>


<head><title>Test</title> 
    <meta charset=utf-8> </head>
    <body>
        <h1>My Website</h1>
        <form action="/my-link/">
            <input type="submit" value="Click me" />
        </form>
        
        <button> <a href="/my-link/">Click me</a></button>

    </body>

3。。実行するには、コマンドプロンプトを開いてNew folderディレクトリに移動し、python server.pyスクリプトを実行し、ブラウザの種類localhost:5000、ボタンが表示されます。クリックして、作成した宛先スクリプトファイルにルーティングできます。

これが役に立てば幸いです。ありがとうございました。

0

がっかりし、問題がありますが、実行可能です。必要なのは、カスタムURIスキームです。マシン上で登録して構成し、そのスキームのURLをボタンにフックする必要があります。

URIスキームは、URIの://の前の部分です。標準URIスキームは、たとえばhttpsまたはftpまたはfileです。しかし、fxのようなカスタムがあります。 mongodb。必要なのはあなた自身ですmypythonscript。スクリプトを実行するように設定することも、パラメータにスクリプト名を含めてpythonとすることもできます。もちろん、柔軟性とセキュリティのトレードオフです。

リンクで詳細を確認できます。

https://support.shotgunsoftware.com/hc/en-us/articles/219031308-Launching-applications-using-custom-browser-protocols

https://msdn.Microsoft.com/en-us/library/aa767914(v = vs.85).aspx

EDIT:カスタムスキームとは何かに関する詳細を追加しました。

0
Mieszko

私はこれをWindows上で正確に行いました。現在のすべての作業の「ダッシュボード」として使用するローカルの.htmlページがあります。通常のリンクに加えて、クリック可能なリンクを追加して、MS-Word文書、Excelスプレッドシート、IDE、サーバーへのsshなどを開くことができました。

まず、Windowsレジストリを更新します。ブラウザは、http、https、ftpなどの通常のプロトコルを処理します。独自のプロトコルと、そのプロトコルタイプのリンクがクリックされたときに呼び出されるハンドラーを定義できます。構成は次のとおりです(regeditで実行)

[HKEY_CLASSES_ROOT\mydb]
@="URL:MyDB Document"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\mydb\Shell]
@="open"

[HKEY_CLASSES_ROOT\mydb\Shell\open]

[HKEY_CLASSES_ROOT\mydb\Shell\open\command]
@="wscript C:\_opt\Dashboard\Dashboard.vbs \"%1\""

これにより、<a href="mydb:open:ProjectX.docx">ProjectX</a>のようなリンクがある場合、クリックするとC:\_opt\Dashboard\Dashboard.vbsが呼び出され、コマンドラインパラメーターopen:ProjectX.docxが渡されます。私のVBSコードはこのパラメーターを見て必要な処理を行います(この場合、.docxで終わるため、ProjectX.docxをパラメーターとしてMS-Wordを呼び出します。

今では、非常に古いコード(15年以上)であるため、ハンドラーをVBSで記述しました。試したことはありませんが、代わりにPythonハンドラー、Dashboard.py]を書くことができるかもしれません。スクリプトの場合、リンクはhref="mydb:runpy:whatever.py"になります(runpy:プレフィックスは、Pythonで実行するようにハンドルに指示します)。

0
BareNakedCoder

最良の方法は、Python Webフレームワークを選択できますDjango/Flaskを使用することです。使用することをお勧めしますDjangoはより強力であるため、タスクを完了するためのガイド別の手順は次のとおりです。

pip install Django
django-admin createproject buttonpython

次に、buttonpythonディレクトリにviews.pyというファイル名を作成する必要があります。

views.pyの以下のコードを書きます。

from Django.http import HttpResponse

def sample(request):
    #your python script code
    output=code output
    return HttpResponse(output)

完了したら、urls.pyに移動し、このスタンザを追加します

from . import views

path('', include('blog.urls')),

親ディレクトリに移動して、manage.pyを実行します

python manage.py runserver 127.0.0.1:8001

ステップバイステップガイドの詳細: Run Python HTMLボタンをクリックしたときにスクリプト

0
kavin