ブログ移行しました。

GUNMA GIS GEEK http://shimz.me/blog/

特殊フォルダのパスを得る

WScript.ShellオブジェクトではSpecialFoldersプロパティを得ることができる。 このプロパティはwindowsの特別なフォルダ(デスクトップやマイドキュメントなど)のパスを得ることができる。 >>> import win32com.client >>> com = win32com.client.Dispatch("…

windows COMオブジェクトを操作する

win32allモジュールの中のwin32com.clientは、windowsのCOM(Component Object Model)オブジェクトを操作する拡張モジュール。 Python Win32 Extensions(win32all) http://starship.python.net/crew/mhammond/win32/Downloads.html コレを使うことでWSHのよう…

日本語で正規表現を使う

Shift-jisでは値にバックスラッシュ(=0x5c)が含まれる場合がある。(例えば"表"の字) Pythonではバックスラッシュはエスケープ文字として扱われるので、そのような文字が正規表現のパターンに含まれていると意図しない結果となる。 文字列をいったんunicodeに…

文字コード変換

>>>import pykf >>>import urllib >>>url = "http://www.yahoo.co.jp" >>>urlhandler = urllib.urlopen(url) >>>html = urlhandler.read() >>>html = pykf.tosjis(html, pykf.EUC) >>>print html yahooページの文字コードは「EUC」なので「SJIS」に変換する …

文字コードの推測

>>>import pykf >>>string = "あいうえお" >>>print pykf.guess(string) 2 対応表 ASCII = 1 ERROR = -1 EUC = 3 JIS = 4 SJIS = 2 UNKNOWN = 0 UTF16 = 7 UTF16_BE = 8 UTF16_LE = 7 UTF8 = 5

TCPWatchを使って、リクエストの中身を確認しながらテスト

http://hathawaymix.org/Software/TCPWatchコマンドラインからTCPWatchを起動する。 c:>tcpwatch.py -p 127.0.0.1:3128 TCPWatchをset_proxyしてリクエストを飛ばす >>>import urllib2 >>>req = urllib2.Request("http://www.google.co.jp") >>>req.set_prox…

プロクシを指定してリクエスト

>>>import urllib2 >>>req = urllib2.Request("http://www.google.co.jp") >>>req.set_proxy("proxy.example.com:8080", "http") >>>req.add_header("User-agent", "python") >>>req.add_header("Pragma", "no-cache") >>>site = urllib2.urlopen(req)

ヘッダーに色々追加してリクエスト

>>>import urllib2 >>>req = urllib2.Request("http://www.google.co.jp") >>>req.add_header("User-agent", "python") >>>req.add_header("Pragma", "no-cache") >>>urlhandler = urllib2.urlopen(req)

User-Agentを指定してリクエスト

>>>import urllib2 >>>req = urllib2.Request("http://www.google.co.jp") >>>req.add_header("User-agent", "python") >>>urlhandler = urllib2.urlopen(req)

webページをゲットする。

>>>import urllib2 >>>urlhandler = urllib2.urlopen("http://www.google.co.jp") >>>html = urlhandler.read() 一行ずつ読み込む >>>html = urlhandler.readline() 一行ずつリストに格納 >>>html = urlhandler.readlines()

起動時の引数(args)解析

optparseモジュールを使って起動時の引数の解析を行う基本。 [argsOp.py] #!/bin/env python # -*- coding: shift_jis -*- import sys from optparse import OptionParser #引数の設定 parser = OptionParser() parser.add_option("-f", "--file", dest="fil…

ファイルのダウンロード

連番を開くスクリプトを書いたので、せっかくだから開いたurlからファイルをダウンロードするスクリプトをつくってみようかと思ったのだけれど巧くいかない。 urllibのリファレンスに urlretrieve( url[, filename[, reporthook[, data]]]) URL で表されるネ…

連番urlの展開

正規表現の練習に連番urlを展開して表示するスクリプトを作ってみた。 http://www.doqn.ne.jp/65-32/cg/[10-20].html だったら http://www.doqn.ne.jp/65-32/cg/10.html http://www.doqn.ne.jp/65-32/cg/11.html http://www.doqn.ne.jp/65-32/cg/12.html っ…

ヘッダ収集

はじめにURLを書いたテキストファイル「URL.txt」を用意する。 www.google.co.jp www.yahoo.co.jp www.microsoft.com/ URL.txtの内容を読み込んで、それぞれのサイトのヘッダを表示するスクリプトを作ってみる。 [headget.py] #!/bin/env python # -*- codin…

HTTPクライアント3

urllibを使うと……楽。 #!/bin/env python # -*- coding: shift_jis -*- import urllib res = urllib.urlopen("http://www.google.co.jp/") print res.read()

HTTPクライアント2

httplibをつかって"GET"リクエスト #!/bin/env python # -*- coding: shift_jis -*- import httplib conn = httplib.HTTPConnection("www.google.co.jp") conn.request("GET", "/index.html") res = conn.getresponse() print res.read()

HTTPクライアント1

とりあえずネットワークプログラミングっぽい ことをやってみる。 参考:HTTP プロトコル http://www.wakhok.ac.jp/~maruyama/W3serv/document/node92.html socketを使った基本的なクライアントプログラム googleに"Get"リクエストを送ってみる #!/bin/env p…

ファイル内の#以下コメントの削除

ファイルを一行づつ読み込み、行内に#があったら#以下を削除して表示。 問題点 #のコメントにしか対応していない。 「print "#コメントじゃないよ"」のような行でも#以下をコメントと認識してしまう。 [commentDe.py] #!/bin/env python # -*- coding: shift…

行番号表示

fileview.pyを行数を付けて表示するように変更してみる[fileline.py] #!/bin/env python # -*- coding: shift_jis -*- import sys argv = sys.argv[1:] for i in argv: print "[" + i + "]" for n, line in enumerate(open(i)): print "%d: %s" % (n,line) ,…

ファイル内容表示

引数に指定されたファイルの内容を表示するスクリプトを作ってみる。 [fileview.py] #!/bin/env python # -*- coding: shift_jis -*- import sys argv = sys.argv[1:] for i in argv: print "[" + i + "]" files = open(i,'r') lines = files.readlines() fo…

スクリプト起動時の引数(argv)を得る

sysモジュールのargv[]リストで引数が得られる。 argv[0]は起動したpythonスクリプトファイルの名前が入る。 C:\Python23jp>test.py aaa bbb ccc の場合は、 argv[0] = "C:\Python23jp>test.py" argv[1] = "aaa" argv[2] = "bbb" argv[3] = "ccc" ってこと。…

便利なhelp(変数の型を調べる)

>>> a = 10 >>> type(a) >>> a = "test" >>> type(a) >>> a = [1, 2, 3] >>> type(a) >>> a = (1, 2, 3) >>> type(a) >>> a = {1:1, 2:2, 3:3} >>> type(a) >>> def b(): print "test" >>> a = b >>> type(a) >>> import urllib >>> a = urllib >>> type(a) …

便利なhelp2(メソッド一覧取得)

メソッドがわからな〜いってときはdir() >>> import urllib >>> x = urllib.urlopen("http://www.google.ne.jp") >>> dir(x) ['__doc__', '__init__', '__iter__', '__module__', '__repr__', 'close', 'fileno', 'fp', 'geturl', 'headers', 'info', 'next'…

便利なhelp(モジュールのヘルプ)

対話モードの時、import したモジュールのヘルプが見れる。 >>>import string >>>help(string) でモジュールのヘルプが表示される。(英語だけど...)

基本的なファイル・ディレクトリ操作

▼使い方 以下は、cドライブ直下にtest.txtが存在し、カレントディレクトリ(作業フォルダ)が"C:"であることを前提 (Pythonは"c:python23"にインストールされている状態を前提) なお、Python Shell上では[¥]記号はバックスラッシュ(\)で表示される。 ([c:¥¥…

基本的なファイル操作

ファイル操作の手順は 1.ファイル開く(オープン) 2.ファイル弄る(読んだり、書いたり) 3.ファイル閉じる(クローズ) ファイルのオープンにはfile()を使う。 書式は、 file("ファイル名", "フラグ") open("ファイル名", "フラグ")は、file("ファイル名",…

標準モジュール(ライブラリ)

モジュールは自分で作ることもできるけれど、Pythonには標準でついてくるモジュールが非常に豊富なので、ちょっとした使い捨てスクリプトを作るときにはほぼ事足りる。 参考: 10. 標準ライブラリの簡単なツアー http://www.python.jp/doc/release/tut/node12…

インポート

関数やクラスを保存したスクリプトファイルはimportすることで、別のスクリプトで使用できる。 ▼使い方 以下をtest.pyという名前で保存 #!/bin/env python # -*- coding: shift_jis -*- class Arithmetic: messge = "メソッド実行" def __init__(self): prin…

クラスに関する注意

pythonのクラスでは定義していない識別子(変数など)を指定すると自動的に登録されてしまう。 ▼例 >>> ================================ RESTART ================================ >>> class test1: a = 0 b = 0 def testprint(self): print self.a + self.…