4

だから私はいくつかの HTML を変更して、独自のシステム内のいくつかのファイルに作用する python スクリプトを開始するボタンを持たせようとしています。

より具体的には、snort ログを読み取り、新しい Web サイトへのリンクを生成する Python スクリプトがあります (実際には、パケット キャプチャ ストリーム検索のパラメーターを取得する IP アドレス)。このスクリプトをボタンとして実装しようとしています。ウェブサイト。-注: ボタンをクリックする人が自分のマシンに script.py を持っている必要がある場合は問題ありません

私はこの件について宿題をしようとしましたが、選択肢は無限にあるようです。フレームワークが必要ですか? < script / >またはHTMLコードの何かを使用して、ディレクトリからpythonスクリプトを呼び出すことはできませんか?

4

3 に答える 3

2

簡単な答え: できません。

ユーザーのマシン上のファイルにアクセスすることはできず、ブラウザからファイルを実行することはできません。どれほどのセキュリティ ホールになるか想像してみてください。

ただし、多くの GUI ツールキット (Qt または wx には Web ビューなどがあります) で、独自の単純な Web ブラウザー (たとえば、単一のページを表示するもの) を実装できます。または、使用しているブラウザのプラグイン/アドオンを開発 (または検索) し、それと通信する必要があります。それは各ブラウザなどに依存します。これが実現可能かどうかはわかりません。または、ユーザーは、保存する代わりに実行することを選択したファイルをダウンロードし、スクリプトを実行します。

実際、これこれは基本的にインストールするプラグイン (IronPython と Silverlight に基づく) を見たところですが、ユーザーのシステムにあるスクリプトを実行できるかどうかはわかりません。ページに埋め込まれたコードを実行できます。

于 2012-06-27T19:54:41.020 に答える
-2

IronPython は、あなたが探していたソリューションだったかもしれません: http://ironpython.net/

以下のリンクで提供されているチュートリアルとコードを使用すると、前述のような html の「ボタン」などのイベントに反応する html 要素を作成できるはずです。

私は IronPython で遊んでいて、スクリプトへの内部および外部呼び出しに成功しています。以下のチュートリアルには、他の質問が含まれている可能性があります。

helloworld.html -

IronPython アラートの例、ドキュメント内の内部 Python スクリプト。

ブラウザーで Python アプリケーションを開発するには、お気に入りのテキスト エディターが必要です。それを開いて HTML ファイルを作成し、dlr.js を参照すると、スクリプト タグを使用して Python コードを実行できます。

<html>
<head>
<script src="http://gestalt.ironpython.net/dlr-latest.js"
        type="text/javascript"></script>
</head>
<body>
<script type="text/python">
  window.Alert("Hello from Python")
</script>
</body>
</html>

repl.py

これを REPL ウィンドウで行うには、ブラウザで有効にしましょう。次のスクリプト タグをページに配置するだけです。

from Microsoft.Scripting.Silverlight import Repl

if 'document' not in globals():
  import System
  document = System.Windows.Browser.HtmlPage.Document
if 'window' not in globals():
  import System
  window = System.Windows.Browser.HtmlPage.Window

class PythonRepl(object):
  __ironpython__ = 'silverlightDlrRepl1'
  __minimize__ = 'silverlightDlrWindowLink'
  __container__ = 'silverlightDlrWindowContainer'

  def __init__(self):
    self.repl = Repl.Show('python')

  def hide_all_panels(self):
    window.Eval("sdlrw.hideAllPanels(document.getElementById(\"%s\"))" % self.__minimize__)
  
  def show_panel(self, id):
    window.Eval("sdlrw.showPanel(\"%s\")" % id)
  
  def show_ironpython(self):
    self.show_panel(self.__ironpython__)

  def remove(self):
    document.Body.RemoveChild(document.silverlightDlrWindowContainer)

def show():
  prepl = PythonRepl()
  repl = prepl.repl
  import sys
  sys.stdout = repl.OutputBuffer
  sys.stderr = repl.OutputBuffer
  return prepl

if document.QueryString.ContainsKey('console'): 
  prepl = show()
  if document.QueryString['console'] == 'hide':
    prepl.hide_all_panels()
  else:
    prepl.show_ironpython()

dom.py

IronPython の例: DOM 要素を追加し、その HTML コンテンツを "Ouch!" に変更します。クリック時:

dir(document) 
div = document.CreateElement("div")
div.innerHTML = "Hello from Python!"
document.Body.AppendChild(div)
div.id = "message"
div.SetStyleAttribute("font-size", "24px")
def say_ouch(o, e):
    o.innerHTML = "Ouch!"

document.message.events.onclick += say_ouch

注: IronPython には SilverLight が必要なため、FireFox または Safari でのみ動作します。

あなたの質問に関連する優れたチュートリアル: http://jimmy.schementi.com/2010/03/pycon-2010-python-in-browser.html

于 2015-11-18T19:47:34.987 に答える