pythonのWebアプリのファイル読み込みに関してです
- 評価
- クリップ 1
- VIEW 3,603
pythonを利用したWebアプリの開発を行いたいです。
そのために、このサイトを使用して、
Webサーバを起動→簡単なサイト(拡張子がhtmlではなくpy)を表示する、ということをしようとしておりました。
ソースは以下です。
#!/usr/bin/env python
html_body = """
<html><body>
foo = %s
</body></html>"""
import cgi
form=cgi.FieldStorage() # (1)
print "Content-type: text/html¥n"
print html_body % foo # (2)
この際、サイトが表示されると、
「foo = xxx」の部分のみが出力されるものと思われますが、
「#!/usr/bin/env python」から「print html_body % foo # (2)」まで全てブラウザ上に出力されてしまいます。
おそらく、「#!/usr/bin/env python」の読み込みがおかしいのもしれないと考え、「/usr/bin/env」のパスを調べましたが、そのようなパスはありませんでした。
そういった場合、ここにはなんと記述する必要がありますでしょうか。
pythonのバージョンは
Python 3.4.1 :: Anaconda 2.1.0 (64-bit)
です。
回答お待ちしております。
【追記】
>>> import sys
>>> print(sys.path)
['', '/home/mluser/.pyenv/versions/anaconda3-2.1.0/lib/python34.zip', '/home/mluser/.pyenv/versions/anaconda3-2.1.0/lib/python3.4', '/home/mluser/.pyenv/versions/anaconda3-2.1.0/lib/python3.4/plat-linux', '/home/mluser/.pyenv/versions/anaconda3-2.1.0/lib/python3.4/lib-dynload', '/home/mluser/.pyenv/versions/anaconda3-2.1.0/lib/python3.4/site-packages', '/home/mluser/.pyenv/versions/anaconda3-2.1.0/lib/python3.4/site-packages/Sphinx-1.2.3-py3.4.egg', '/home/mluser/.pyenv/versions/anaconda3-2.1.0/lib/python3.4/site-packages/runipy-0.1.1-py3.4.egg', '/home/mluser/.pyenv/versions/anaconda3-2.1.0/lib/python3.4/site-packages/setuptools-5.8-py3.4.egg']
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
httpサーバが不適切です。
SimpleHTTPRequestHandlerができるのは、ファイルの内容をテキストとして返すことだけです。
http://docs.python.jp/3/library/http.server.html
class http.server.SimpleHTTPRequestHandler(request, client_address, server)(原文)
このクラスは、現在のディレクトリ以下にあるファイルを、HTTP リクエストにおけるディレクトリ構造に直接対応付けて提供します。
プログラムを動かした結果をwebサーバに渡して表示するには、GIHTTPRequestHandlerを使う必要があります。
onceupon05さんが参照しているサイトでもそのようになっています。
http://coreblog.org/ats/stuff/minpy_web/03/02.html
ただ、これを直したとしても、使っているのがAnacondaのpythonなので、その点を考慮しないとうまく動かないかもしれません。
題材にしているサイトは、2.7用に書かれたものなので、そのままでは動きません。改行も¥nと間違っていました。
少なくとも私ところでは、これで動きました。
#!/usr/bin/env python3
html_body = """
<html><body>
foo = %s
</body></html>"""
import cgi
form=cgi.FieldStorage()
foo = form["foo"].value
print("Content-type: text/html\n")
print(html_body % foo)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.37%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
lightson
2016/06/08 20:29
利用しているOSとWebサーバを教えて下さい。
onceupon05
2016/06/08 20:46 編集
OSはLinux mint(特に他のLinuxOSの違いはないかと。。。)を使用しております。
Webサーバは、
import http.server
server_address = ("", 8000)
handler_class = http.server.SimpleHTTPRequestHandler #ハンドラを設定
simple_server = http.server.HTTPServer(server_address, handler_class)
simple_server.serve_forever()
を実行したものをWebサーバとしております。
onceupon05
2016/06/08 20:48
Webサーバの部分のコードが開業されずに、見づらくなってしまいまして申し訳御座いません。