2005-04-01から1ヶ月間の記事一覧
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を展開して表示するスクリプトを作ってみた。 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…
urllibを使うと……楽。 #!/bin/env python # -*- coding: shift_jis -*- import urllib res = urllib.urlopen("http://www.google.co.jp/") print res.read()
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 プロトコル 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…
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" ってこと。…
>>> 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) …
メソッドがわからな〜いってときは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'…
対話モードの時、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: この中でエラーが起きたら except: ここの処理を行う ▼使い方 >>> ========================= RESTART ========================= >>> def test1(a, b): c = a + b print c >>> test1(1, "hello"…
イテレータとは? 日本語では「反復子」などと訳される。 配列のような幾つかの値が並んでいるデータに対して値のひとつを指し、表示したり、次の値に進むなどの機能をもつ。 まぁ、実際に使ってみる方が解りやすい。Pythonの組み込みデータ型(リスト、タプ…
▼書式 for 変数 in シーケンス: 文1 else: 文2 シーケンス(文字列やリスト、タプル、辞書など)の値を変数に代入しながら順次、文1を実行。 シーケンスを回しきったらelseブロックの文2を実行▼使い方 for count in [0, 1, 2, 3, 4]: print count, "回目" …
▼書式 while 式: 文1 else: 文2 式が真であるかぎり文1を繰り返す。 else:ブロックの文2は終了時に一回だけ実行される ▼使い方 count = 0 while count ▼実行結果 0 回目 1 回目 2 回目 3 回目 4 回目 5 回目 6 回目 7 回目 8 回目 9 回目 0 リセットされ…
▼書式 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の構造文はインデント(字下げ)によってブロックを表します。 括弧({})やBEGIN・ENDはありません。 for count in [0, 1, 2, 3]: #文末に[:]を付けるのを忘れずに。 print "ここはfor文のブロックの中" print "ここはfor文のブロックの外"
対話モード(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 "ここも実行され…