Python Memo」タグアーカイブ

HTTP通信でファイルを送受信してみる

非常に簡単な例だが、HTTP通信でクライアントからサーバにファイルを送信する例。クライアント側モジュールであるSend.pyに送信するファイルを引数として与えてあげると、mod_python上で動くサーバモジュールmptest.pyがそのデータを受け取りファイルとして書き出すという流れ。

—–

続きを読む

クライアントから簡単なHTTP通信を送る

僕の環境では、以下のような内容がブラウザに表示されました。

http://d.hatena.ne.jp/rintaromasuda/20061227/1167169553

引用したエントリでブラウザからApacheのmod_pythonモジュールで動くモジュールにリクエストを飛ばしたが、Pythonでクライアントを簡単に作るとすれば以下のように書くだけでOKだ。

—–

続きを読む

Closureについて考えてみる

実は恥ずかしながらクロージャというものがイマイチ何だか分からないというか、何の為に使うのか、何で便利なのかとかまったくもって分からなかったのだが、先日ハッカーと画家 コンピュータ時代の創造者たちの第13章「オタク野郎の復讐」のプログラム比較例を見ていたら突然理解が進んだ。

—–

続きを読む

Apacheにmod_ptyhonを入れてみよう

今回はXMLの話題はお休みして、Apacheにmod_pythonモジュールを入れてみる。今後ここでテストプログラムを作るときは、この環境を利用して簡単なサーバプログラムとするかもしれない。

mod_python : Wikipedia

mod_python is an Apache HTTP Server module that integrates the Python programming language into the Apache server. It is intended to replace Common Gateway Interface (CGI) as a method of executing Python scripts on a web server. The promised benefits are faster execution speed and maintaining data over multiple sessions.

続きを読む

PythonでXMLを扱う(7)

今回からはXSLT(Extensible Stylesheet Language Transformations)を使ってみることにする。まずいつもどおりWikipediaから(日本語版は情報少ないんで、英語版をリンクします)。

Wikipedia : XSL Transformations

Extensible Stylesheet Language Transformations (XSLT) is a Turing complete XML-based language used for the transformation of XML documents.

続きを読む

PythonでXMLを扱う(6)

SAXにてXMLの階層構造を扱う際、あるタグの内部に入ったことをフラグにて判断する方法があると思う。例えば以下のようにフラグを用いることで、hogeタグの内部に入ったのか入っていないのかを判断できる。

class SimpleHandler(ContentHandler):
def __init__(self):
self.inHoge = False
def startElement(self, name, attrs):
if.name == "hoge":
self.inHoge = True
def endElement(self, name):
if.name == "hoge":
self.inHoge = False

ただこれ、もうちょっとスマートに出来ないものかと、ContentHandlerを動的に変更することができないかどうか試してみた。それが出来れば、フラグを立てる代わりにhandlerを入れ替えてしまうという方法が取れる。

続きを読む

PythonでXMLを扱う(5)

前回まではDOMを使っていたが、今回からはSAX(Simple API for XML)を使ってXMLを扱ってみる。DOMと違ってメモリ上にXMLファイルの情報を全て読み込むようなことはなく、順次読み込みを行い、読み込んだ内容に対して逐次イベントを発生させる仕組みのAPIである。

Wikipedia : Simple API for XML

XML文書をツリー構造として扱うDOMと異なり、一連のイベントとして表現するイベント駆動型のAPIである。したがって、アプリケーションが積極的にAPIにアクセスするDOMに対し、SAXではアプリケーションがイベントが来るのを待ち受ける受動的な動作が大部分を占める。

あるXMLを扱うアプリケーションを作成する際、DOMを使うかSAXを使うかは、両者のメリットデメリットをしっかり認識した上で扱うべきであるが、一般的に大きなサイズのXMLファイルであればSAXを用いた方が良さそうだ。

—–

続きを読む

PythonでXMLを扱う(4)

Foundations of Python Network Programming

今回は、DOMインターフェースを使ってXML文書を作成してみる。DOMインターフェースなぞ使わなくても、プログラム言語の文字列操作でXML文書を作ることは可能ではあるが、DOMを用いることで正しいXML文書が簡単に作れるということが保証される。

—–

続きを読む