2017-03-11 12 views
2

は、私がコマンドラインpython.exe -u server.pyを使用してこのファイルを呼び出す場合、私は'/'メインディレクトリにPythonスクリプトを提供することができるでしょうコマンドラインでhttp.serverを使ってfile.pyをパラメータとして渡すには?

from http.server import CGIHTTPRequestHandler, HTTPServer 
PORT = 5005 
handler = CGIHTTPRequestHandler 
handler.cgi_directories = ['/'] # this is the current directory 
server = HTTPServer(('localhost', PORT), handler) 
print ('Server is ready at', PORT, 'PORT') 
server.serve_forever() 

シンプルserver.pyを考えてみましょう。

python -m http.server --bind localhost --cgi 5005も直接使用できます。私は、ブラウザで特定のpythonファイルを開く必要があり、両方のケースで

、言うことができます:http://localhost:5005/myfunction.py

は、コマンドラインで直接http.server使用file.pyを含めることが代わりますか?

たとえば、に相当するものは、マイクロnpmモジュールに従っていますか?

+0

それを行うためには、x =サーバーのベースURLとy = x + pythonfileとしましょう。yからxの部分を削除して、ファイル名を取得します。 –

+0

'localhost: 5005/'(ルートディレクトリ)をファイルにコピーしますか?私は「マイクロ」が何であるかに慣れていないので、実際に何を求めているのか分かりません。 –

+0

@ TadhgMcDonald-Jensenはい。 'localhost:5005 /'をコマンドラインを使って特定のファイルにリダイレクトします。 – estebanpdl

答えて

1

それがthe base codeでサポートされていない、他の何にもindex.htmlまたはindex.htm(またはファイルのリスト)をリダイレクトするようだ:

一つの解決策は単純にそうタプル ("index.html", "index.htm")ポイントを元のソースを変更することであろう
#if <path is a directory>: 

     for index in "index.html", "index.htm": 
      index = os.path.join(path, index) 
      if os.path.exists(index): 
       path = index 
       break 
     else: 
      return self.list_directory(path) 

実行時により簡単に変更できるもの。あるいは、自分で確認する独自のラッパーを定義することもできます。基本的には、def send_head関数全体をコピーし、そのループをオーバーライドして、リダイレクト先のファイルにpathを割り当てます。

私はソースコードの書き換えを含まない解決策がありましたが、別の(純然たる)解決策は考えられません。

+0

私は素晴らしい解決策だと思います。私はこの代替案をチェックします。ご協力いただきありがとうございます。 – estebanpdl

関連する問題