2005-04-01から1ヶ月間の記事一覧

起動時の引数(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.…

クラス内の変数

クラスの中で変数を使うときは、インデント(字下げ)によって区切られたブロックの階層に注意。 ▼例 >>> ================================ RESTART ================================ >>> class test: #ここは階層1 a = "test" def testprint(self): #ここ…

クラス定義

クラスは、変数とそれを操作する関数をまとめて名前(クラス名)を付けたもの。 操作する関数群をメソッドと呼ぶ ▼書式 class クラス名(継承するクラス名): メンバー変数の定義 def __init__(引数): 文1 def メソッド名1(引数): 文2 def メソッド名2(引数)…

関数定義

関数というのは、データを受け取り定められた処理を実行して結果を返す命令群。 頻繁に使う処理を名前(関数名)を付けて定義しておけば、スクリプト内でいつでも呼び出せて使える。 ▼書式 def 関数名(引数のリスト): 文1 return 関数が返すデータ 関数を呼び…

try構文(エラー処理)

例外処理とかエラートラップなどと呼ばれるやつ。 ▼書式 try: この中でエラーが起きたら except: ここの処理を行う ▼使い方 >>> ========================= RESTART ========================= >>> def test1(a, b): c = a + b print c >>> test1(1, "hello"…

イテレータ

イテレータとは? 日本語では「反復子」などと訳される。 配列のような幾つかの値が並んでいるデータに対して値のひとつを指し、表示したり、次の値に進むなどの機能をもつ。 まぁ、実際に使ってみる方が解りやすい。Pythonの組み込みデータ型(リスト、タプ…

for構文(繰り返し2)

▼書式 for 変数 in シーケンス: 文1 else: 文2 シーケンス(文字列やリスト、タプル、辞書など)の値を変数に代入しながら順次、文1を実行。 シーケンスを回しきったらelseブロックの文2を実行▼使い方 for count in [0, 1, 2, 3, 4]: print count, "回目" …

while構文(繰り返し1)

▼書式 while 式: 文1 else: 文2 式が真であるかぎり文1を繰り返す。 else:ブロックの文2は終了時に一回だけ実行される ▼使い方 count = 0 while count ▼実行結果 0 回目 1 回目 2 回目 3 回目 4 回目 5 回目 6 回目 7 回目 8 回目 9 回目 0 リセットされ…

if構文(分岐)

▼書式 if 式1: 文1 elif 式2: 文2 else: 文3 式1の値が真であれば文1を実行 式1の値が偽で式2の値が真であれば文2を実行 式1も式2の値も偽であれば文3を実行 ▼使い方 test = 1 if test == 0: print "変数testの値は0" elif test == 1: print "…

pythonの構造文

Pythonの構造文はインデント(字下げ)によってブロックを表します。 括弧({})やBEGIN・ENDはありません。 for count in [0, 1, 2, 3]: #文末に[:]を付けるのを忘れずに。 print "ここはfor文のブロックの中" print "ここはfor文のブロックの外"

pythonの変数

対話モード(python shell)で入力。 シャープ[#]以下はコメントなので、入力しなくてもよい。▼変数(数字) >>> a = 1 #aという変数に1を格納している >>> A = 10 #大文字と小文字は違う変数として扱われる >>> print a 1 >>> print a, A 1 10 >>> b = -1 >>> c…

コメント 

シャープ「#」から行末までがコメントになる。 >>>print "Hello World" #ここからコメント Hello Worl 複数行にわたってコメントを記述したいときは「"""」を使う。 print "ここは実行される" """ ここはコメント ここもコメント """ print "ここも実行され…