SSブログ

Python CGI で来客記録をつける [プログラム三昧]このエントリーを含むはてなブックマーク#

今回のPythonで作る CGI では、来客記録をとってみます。

履歴をファイルに記録する

CGIの前半では、来客記録を更新します。 来客記録は、サーバ上のファイルに記録していきます。 フォーマットは、一行に一件という簡単なものです。 Pythonには、ファイルというオブジェクトがあり、これを使うことでファイルの読み書きを行うことが出来ます。 来客があるたびにファイルの最後に"HOGE HOGE"と記録させるためには、以下のように書きます。

# Append a record of this visit
f = open(record_file,"a+")
try:
    f.write("HOGE HOGE\n")
finally:
    f.close()

これだけでは、芸が無いので"HOGE HOGE"の代わりに来訪時刻を書かせるようにします。 これには、日付と時刻を扱う"datetime"というモジュールを使います。 "datetime"モジュールの"datetime"オブジェクトの"now()"メソッドを呼び出すと現在時刻を表す"datetime"オブジェクトを得ることができます。 このオブジェクトからお好みのフォーマットの文字列を得る"strftime()"メソッドを使って、現在時刻を表す行を作成します。

    f.write(datetime.datetime.now().
        strftime("%Y-%m-%d (%A) %H:%M:%S\n"))

これで、例えば、"2009-02-04 (Wednesday) 22:44:43"という一行が追加されます。

来客記録を表にする

CGIの後半では、出来上がった来客記録ファイルを使って、来客表の入ったHTML文書を作成させます。 ファイルの内容を読み出すためにも、ファイルオブジェクトを使用します。

# Make a table contents
f = open(record_file,"r")
try:
    for line in f:
        print "<tr><td>%s</td></tr>\n" % line
finally:
    f.close()

この前後にHTML文書のヘッダとフッタをそろえて、CGIは、完成です。

できあがり

完成したCGIは、こうなりました。 都合により、来訪記録を書き込んだ具体的なファイル名は伏せてあります。 http://noritan.org/cgi/visitor_world.cgi に配置してありますので、よろしければ、お試しください。

#!/usr/local/bin/python
# $Id: visitor_time.cgi,v 1.2 2009/02/04 13:46:27 noritan Exp $

import os
import sys
import datetime

record_file = "XXXXXXXXXX"

# Show error as a page description.
sys.stderr = sys.stdout

# Append a record of this visit
f = open(record_file,"a+")
try:
    f.write(datetime.datetime.now().
        strftime("%Y-%m-%d (%A) %H:%M:%S\n"))
finally:
    f.close()

# Show a list of visitor record
print """Content-type: text/html

<html>
<head>
<title>VISITOR WORLD</title>
</head>
<body>
<h1>VISITOR WORLD</h1>
<table border="1" cellpadding="3">
"""

# Make a table contents
f = open(record_file,"r")
try:
    for line in f:
        print "<tr><td>%s</td></tr>\n" % line
finally:
    f.close()


print """
</table>
</body>
</html>
"""

このCGIでは、複数の来客があった場合、同じファイルに同時にアクセスが発生します。 そのため、ファイルが壊れる危険性をもっています。 本来は、ロック機構を取り入れるべきなので、あとで考えてみます。

参考文献

図書館で借りました。

初めてのPython 第2版

初めてのPython 第2版

  • 作者: マーク ルッツ
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2004/11
  • メディア: 単行本

英語版は、第3版が出ています。

Learning Python (Learning)

Learning Python (Learning)

  • 作者: Mark Lutz
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2007/10
  • メディア: ペーパーバック

参考サイト

http://python.org/
マニュアルなどは、ここで参照しています。 Pythonは、そのバージョンによって刻々と変遷している言語なので、サーバに入っているバージョンを確認したうえでプログラムを書く必要があります。

nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。