[Windows Mobile]PythonCEをAdvanced/W-ZERO3 [es]で使ってみた
ここのところ、Advanced/W-ZERO3 [es]でのセルフプログラミング用言語の探索をしてます。
ZaurusではRubyを使っていますが、ruby-mswinceはsocket(ネットワーク系機能)が使えないのが残念だったので、別のプログラミング言語を調べ、PythonCEに行き着きました。
これが予想外にとても使えるものだったのでホクホク。
Advanced/W-ZERO3 [es]でも問題無く使えているよう。
インストールはcab一発。
今なら、「PythonCE-25-20061219.PPC2003_ARM.CAB」というファイルをインストールすればOK。
PythonCEを一度起動すると、拡張子pyへの関連付けがなされるようです。
Pythonスクリプトを拡張子pyのファイルとしてエディタで作れば、Explorer等から実行可能です。
PythonCEは独自にコンソールを実装しているので、cmd.exeを使う場合に問題になる、エラーメッセージが読めないというトラブル、標準出力に表示しなくなってしまうトラブルと無縁。
Python2.5がベースになっていてcodecsが標準で添付されており、日本語への対応OK。
内部処理はasciiかunicodeですが、shift_jisやeuc-jpなどの読み書きが可能。socketも動作を確認。
EmacsCEにpython-mode
Pythonのソースを書くには、python-modeを使うと便利。これをEmacsCEで動かします。
解凍して出てきた*.elをsite-lispにコピー。
EmacsCEには(というか、Emacs20.7には)python-modeに必要なansi-color.elが入っていないので、www.emacswiki.orgからもらってきて、site-lispに入れたらすんなり動きました。
ただ、EmacsCEではMule-UCSが動かないので、utf-8でソースを書けないのが困りもの。
普通は母艦でスクリプトを書いて、それを持ってくる方がいいと思いますが、Mac OS X Tiger標準のPythonはcodecsにshift_jis、euc_jpが入ってなかったりしたので2.5を入れて環境を合わせました。
マニュアルを用意
PyJUGに日本語マニュアルあり。
html版のアーカイブをダウンロードし、microSDに入れておき、ブックマーク。
動作確認スクリプト:Webページを取ってきてテキストファイルとして保存
import httplib, codecs, re
conn = httplib.HTTPConnection('www.google.co.jp', 80)
conn.request("GET", "/index.html")
res = conn.getresponse()
conn.close
body = res.read().decode('shift_jis')
body = re.sub("<.+?>", "", body, 0)
body = re.sub(" ", " ", body, 0)
body = re.sub("©", "(c)", body, 0)
fout = codecs.open('/google.txt', 'w', 'shift_jis')
fout.write(body)
fout.close
動作確認スクリプト:Webページの一部を抜き出す
Rubyで言うところのopen-uriのようなurllibを使えば、より簡単にページを取得できます。
スクレイピングをするBeautifulSoupというライブラリがあり(sh1.2さんの紹介記事)これも動作しました。
こういう非標準ライブラリは、Libディレクトリに入れておくと使えるようになります。
最初に使われるときに、バイトコンパイルされるようですね。
ページ中のリンクを集めてファイルに書き出す処理です。
import urllib from BeautifulSoup import BeautifulSoupURL='http://www.google.co.jp/'
b = BeautifulSoup(urllib.urlopen(URL))urls = []
for i in b.findAll('a'):
try:
if i.attrs[0][0] == 'href':
urls.append(i.attrs[0][1])
except IndexError:
continuefout = open('/urls.txt', 'w')
for u in urls:
fout.write(u + "\n")
fout.close
動作確認スクリプト:メールを送る
SMTP認証あり、Message Submissionの例。
日本語のメールを送ることも可能と思われます。
PythonCEには、Pythonの一般事例がそのまま適用できるようなので、情報には事欠かないでしょう。
import smtplib
server = smtplib.SMTP('SERVER_ADDRESS', 587)
fromaddr = 'FROM@ADDRESS'
toaddr = 'TO@ADDRESS'
msg = 'PythonCE test'
server.login('USER_NAME', 'PASSWORD')
server.sendmail(fromaddr, toaddr, msg)
server.quit()
総評
立派なオブジェクト指向言語。ネットワークへの対応もバッチリ、日本語の読み書きもOKということで、かなり実用的と感じました。国内でももっと使われていいんじゃないでしょうか。
今回インストールしたPythonCEにはsqlite3.dllが添付されていて、sqlite3をimportできたので標準で使えるようです。かなり便利そう。
MortScriptやnScript/nScriptmと比較した場合、Windows Mobileにフォーカスした関数が乏しいのがウィークポイントですが、それを補ってあまりある基本機能とドキュメント、ライブラリ、情報があるので、必ずやAdvanced/W-ZERO3 [es]の力になってくれるはず。
足りないところはMortScriptと組み合わせて補うと、案配がいいんではないかと。
Win32apiのwrapperをPure Pythonで書けるようです。PythonCEにはwin32clipboardが無いんですが、クリップボードへのアクセスも拡張できるんですかね。
« [Windows Mobile]ruby-mswinceをAdvanced/W-ZERO3 [es]で使ってみた | Main | [Window Mobile]WX310K(京ぽん2)からAdvanced/W-ZERO3 [es]にアドレスとブックマークを転送 »
Recent Comments