Python クックブック 第2版

[cover photo]
TOPICS
クックブック , Programming , Python
発行年月日
PRINT LENGTH
652
ISBN
978-4-87311-276-3
原書
Python Cookbook, Second Edition
FORMAT
Print PDF
Ebook
4,620円
Ebookを購入する
Print
4,620円

この本は、Pythonそのものを教えようとする本ではなく、特定のタスクに対応するための特定の概念やテクニックを(ときにトリックも)示したものである。収録したレシピは、初歩的で一般性の高いタスクから、高度、あるいは専門的なタスクまで、最上のテクニックを示している。あなたのPythonレベル、もっと一般的に言えばプログラミングスキルが、どの程度のものであるにせよ、この本から何らかの価値あるものを得ていただけると信じるものである。――Pythonコミュニティの英知を集めた実践的なコードを収録。Pythonを使いこなすための決定版。

目次

訳者まえがき
まえがき

1章 テキスト
	1.0 イントロダクション
	1.1 文字列を1文字ずつ処理する
	1.2 キャラクタとその文字コード値を相互変換
	1.3 オブジェクトが文字列のようなものかテストする
	1.4 文字列の整形
	1.5 文字列両端のスペースを刈り込む
	1.6 文字列の連結
	1.7 文字列を単語ごとに反転する
	1.8 文字列にキャラクタセットの文字が含まれるか調べる
	1.9 文字列クラスのtranslateメソッドを簡便に使う
	1.10 文字列をキャラクタセットでフィルタリング
	1.11 文字列がテキストかバイナリ調べる
	1.12 大文字小文字
	1.13 文字列の一部にアクセスする
	1.14 インデントの変更
	1.15 タブとスペースの変換
	1.16 文字列中の変数に手を加える
	1.17 文字列中の変数に手を加える(Python2.4以降)
	1.18 一度に複数のパターンの置換をする
	1.19 文字列末尾が各種パターンと一致するか調べる
	1.20 Unicodeにより多言語テキストを扱う
	1.21 Unicodeと通常の文字列を相互変換
	1.22 標準出力にUnicodeキャラクタを出力
	1.23 XMLやHTML向けにUnicodeデータをエンコード
	1.24 一部の文字列のみ大文字小文字無関係にする
	1.25 Unixターミナル上でHTMLをテキストに変換

2章 ファイル
	2.0 イントロダクション
	2.1 ファイルを読む
	2.2 ファイルに書き込む
	2.3 ファイル中のテキストの検索置換
	2.4 ファイル中の特定の行を読み込む
	2.5 ファイルの行数を数える
	2.6 ファイル中の全てのワードを処理する
	2.7 入出力をランダムアクセスで
	2.8 ランダムアクセスファイルの更新
	2.9 zipファイルのデータを読む
	2.10 文字列の中のzipファイルの扱い
	2.11 ファイルツリーをtarファイルにして圧縮
	2.12 バイナリデータをWindowsの標準出力に送る
	2.13 C++的なiostreamシンタックスを使う
	2.14 不可逆ストリーム入力のファイルを巻き戻す
	2.15 「ファイル的」オブジェクトを普通のファイルオブジェクトに
	2.16 ディレクトリツリーの探索
	2.17 ディレクトリツリーに散在するファイルの拡張子を変更
	2.18 サーチパスにあるファイルを見つける
	2.19 サーチパスとパターンマッチでファイルを見つける
	2.20 Pythonサーチパスにあるファイルを見つける
	2.21 Pythonサーチパスの動的変更
	2.22 相対パスを導き出す
	2.23 バッファされない文字をプラットフォームに依存せずに読む
	2.24 Mac OS XでPDFのページ数を数える
	2.25 Windowsでファイル属性を変更する
	2.26 OpenOffice.org文書からテキストを抽出
	2.27 Microsoft Word文書からテキストを抽出
	2.28 プラットフォームに依存せずAPIでファイルロック
	2.29 ファイル名にバージョンを
	2.30 CRC-64の計算

3章 時間とお金
	3.0 イントロダクション
	3.1 昨日と明日の計算
	3.2 先週の金曜日
	3.3 	2つの日付の間の期間は
	3.4 合計演奏時間
	3.5 2つの日付の間のウィークデーの数
	3.6 休日の自動計算
	3.7 ファジーな日付解釈
	3.8 夏時間が使用されているか調べる
	3.9 タイムゾーン間の変換
	3.10 コマンドの反復実行
	3.11 コマンドの予定実行
	3.12 Decimal(十進)による計算
	3.13 Decimalを通貨として整形する
	3.14 Pythonを簡単な加算器に
	3.15 クレジットカードのチェックサム
	3.16 為替レートの監視

4章 ショートカット
	4.0 イントロダクション
	4.1 オブジェクトのコピー
	4.2 リスト内包でリストを作る
	4.3 指定した要素がリスト中に存在すれば返す
	4.4 シーケンスのアイテムとそのインデックスをループ処理
	4.5 参照を共有せずにリストのリストを作る
	4.6 入れ子になったシーケンスの平滑化
	4.7 列から成るリストのデータを行単位で削除/並べ替え
	4.8 2次元配列の転置
	4.9 ディクショナリから値を得る
	4.10 ディクショナリにエントリを追加
	4.11 引用府におぼれずディクショナリ構築
	4.12 キーと値が交互に入ったリストからdictを構築
	4.13 ディクショナリの部分集合
	4.14 ディクショナリの反転
	4.15 ディクショナリの各キーに複数の値を割当てる
	4.16 メソッドや関数の発行にディクショナリを使う
	4.17 複数のディクショナリ集合から、和(∪)や交差(∩)を探索
	4.18 名前のついたアイテム群を集めておく
	4.19 単一の文で代入と検査を同時に行う
	4.20 Pythonでprintf
	4.21 アイテムごとに確率を定めたランダム抽出
	4.22 式中での例外処理
	4.23 指定のモジュール内で名前が定義されていることを保証する

5章 サーチとソート
	5.0 イントロダクション
	5.1 ディクショナリのソート
	5.2 文字列リストを大文字小文字無関係にソート
	5.3 オブジェクトのリストをオブジェクトの属性でソート
	5.4 キーやインデックスを、その値によりソート
	5.5 含まれる数値で文字列をソート
	5.6 リストのアイテム全てをランダムな順序で処理
	5.7 アイテムが加えられてもソート済みに保つ
	5.8 シーケンスのアイテムを小さい方から取る
	5.9 ソート済みシーケンスからアイテムを探索
	5.10 n番目に小さい要素は
	5.11 クイックソートを3行で示す
	5.12 シーケンスにアイテムの存在チェックをかける
	5.13 サブシーケンスを見つける
	5.14 ディクショナリにレーティング機能を
	5.15 名前をソートしてイニシャルで分ける

6章 オブジェクト指向プログラミング
	6.0 イントロダクション
	6.1 温度スケールの変換
	6.2 定数を定義する
	6.3 属性の設定を制限
	6.4 ディレクトリ探索のチェーン化
	6.5 継承ではできないことをする(自動委譲)
	6.6 proxyで特殊メソッドを委譲
	6.7 名前付きアイテムのタプル
	6.8 プロパティにアクセスするコードをキレイに
	6.9 オブジェクトのコピーを素早く
	6.10 ガベージコレクションを邪魔することなく結合メソッドへのリファレンスを保持
	6.11 リングバッファを実装する
	6.12 インスタンスに変化があったかチェックする
	6.13 オブジェクトが必要な属性を備えているかチェックする
	6.14 Stateデザインパターンを実装する
	6.15 Singletonデザインパターンを実装する
	6.16 Singletonデザインパターンの使用を避けてBorgの方法を利用する
	6.17 Null Objectデザインパターンを実装する
	6.18 __init__の引数でインスタンス変数を自動設定
	6.19 スーパークラスの__init__が存在すれば実行する
	6.20 スーパークラスのメソッドの共同呼び出しを簡潔かつ安全に

7章 永続性、データベース
	7.0 イントロダクション
	7.1 marshalモジュールを用いてデータをシリアライズする
	7.2 pickle/cPickleモジュールを利用してシリアライズする
	7.3 シリアライズしたデータを圧縮する
	7.4 クラス、インスタンスにcPickleを使用する
	7.5 結合メソッドをPickle化できる状態で保存する
	7.6 コードオブジェクトをPickle化する
	7.7 shelveを使ったオブジェクトに変更を加える
	7.8 Berkeley DBデータベースを使う
	7.9 MySQLデータベースへのアクセス
	7.10 BLOBをMySQLに保存する
	7.11 BLOBをPostgreSQLに保存する
	7.12 BLOBをSQLiteに保存する
	7.13 フィールド名と列番号の対応表のディクショナリを生成する
	7.14 dtupleでクエリ結果にフレキシブルにアクセスする
	7.15 データベースカーソルの内容をきれいに出力したい
	7.16 DB APIモジュールに渡すパラメータのスタイルを統一する
	7.17 ADOを経由してMicrosoft Jetを使用する
	7.18 JythonのサーブレットからJDBCを使ってデータベースにアクセスしたい
	7.19 JythonでExcelのデータを扱うためにODBCを利用する

8章 デバッグとテスト
	8.0 イントロダクション
	8.1 ループや条件式の実行を止める
	8.2 Linux上でもメモリ使用量を測定する
	8.3 ガベージコレクションの過程をデバッグ
	8.4 例外のトラップと記録
	8.5 デバッグモードで式やコメントを追う
	8.6 トレースバックからより多くの情報を
	8.7 トラップできない例外で自動的にデバッガを起動
	8.8 最も簡単なユニットテスト
	8.9 ユニットテストを自動的に
	8.10 doctestをunittestで使う(Python2.4)
	8.11 ユニットテストで範囲値をチェック

9章 プロセスとスレッド、その同期
	9.0 イントロダクション
	9.1 オブジェクト中の全メソッドを同期
	9.2 スレッドの終了
	9.3 Queue.Queueを順位付きキューとして使う
	9.4 スレッドプール
	9.5 引数のセットをいくつも使って関数を並列実行
	9.6 簡単なメッセージパッシングによるスレッド協調
	9.7 スレッドごとの情報を保存
	9.8 スレッドを使わずに協調的マルチタスクを
	9.9 Windowsで、同じスクリプトが既に走っているか確かめる
	9.10 MsgWaitForMultipleObjectsでWindowsメッセージの処理
	9.11 popenで外部プロセスを駆動
	9.12 Unixシェルコマンドの標準出力、エラー出力をキャプチャ
	9.13 デーモンのフォーク(Unix)

10章 システム管理
	10.0 イントロダクション
	10.1 ランダムなパスワードの生成
	10.2 簡単に覚えられて、ある意味ランダムなパスワードの生成
	10.3 POPサーバを使ったユーザ認証
	10.4 IPアドレスごとのヒット数集計(Apache)
	10.5 クライアントキャッシュのヒット率計算(Apache)
	10.6 スクリプトからエディタを起動
	10.7 ファイルのバックアップ
	10.8 Mailboxファイルを選択コピー
	10.9 Mailboxからアドレスのホワイトリストを作成
	10.10 重複メールのブロック
	10.11 Windowsのサウンドシステムをチェック
	10.12 Windows DLLの登録・削除
	10.13 Windowsのログイン時の自動実行タスクをチェック、修正
	10.14 「共有」の作成(Windows)
	10.15 実行中のInternet Explorerにつなげる
	10.16 Microsoft Outlookの「連絡先」を読む
	10.17 詳しいシステム情報を得る(Mac OS X)

11章 ユーザインタフェース
	11.0 イントロダクション
	11.1 コンソールでプログレスインジケータを表示する
	11.2 lambdaを使わずコールバック関数を書く
	11.3 tkSimpleDialogの関数にデフォルト値や範囲制限を使う
	11.4 Tkinterのリストボックスをドラッグアンドドラッグで並び替えできるようにする
	11.5 Tkinterでアクセント記号を入力
	11.6 Tkinterで使うGIFをコードに埋め込む
	11.7 画像のフォーマットを変換する
	11.8 Tkinterによるストップウォッチ
	11.9 スレッドでGUIと非同期I/Oを結合
	11.10 TkinterでIDLEのツリーウィジェットを利用する
	11.11 複数の値を入れられる行(row)を持ったTkinterのリストボックス
	11.12 Tkinterウィジェット間でジオメトリメソッドやオプションをコピーする
	11.13 Tkinterでタブを
	11.14 wxPythonでタブを
	11.15 JythonでImageJプラグインを実装
	11.16 SwingとJythonを使ってURLのイメージを表示
	11.17 	Mac OSでユーザに入力させるには
	11.18 Python Cocoa GUIの「プログラマティックな」構築
	11.19 IronPythonでフェードインするウィンドウを作る

12章 XMLの処理
	12.0 イントロダクション
	12.1 整形式(well-formed)であるかチェックする
	12.2 タグを数える
	12.3 テキストの抽出
	12.4 XMLエンコーディングの自動認識
	12.5 XML文書をPythonのオブジェクトツリーに変換
	12.6 XML DOMノードのサブツリーからスペースのみのテキストノードを削除
	12.7 Microsoft ExcelのXMLをパース
	12.8 XML文書の検証(validate)
	12.9 ある名前空間に属す要素と属性を除く
	12.10 連続的なテキストイベントをSAXフィルターで結合
	12.11 XMLやHTMLのパースにMSHTMLを使う

13章 ネットワークプログラミング
	13.0 イントロダクション
	13.1 ソケットデータグラムによるメッセージ伝達
	13.2 Webドキュメントの取得
	13.3 FTPサイトリストにフィルタをかける
	13.4 SNTPプロトコルでサーバから時刻を得る
	13.5 HTMLメールを送る
	13.6 MIMEによるファイル添付
	13.7 MIMEマルチパートメッセージのアンパック
	13.8 添付ファイルの削除
	13.9 Python 2.4のemail.FeedParserで解釈されたメッセージを修正
	13.10 POP3メールボックスを対話的に調べる
	13.11 アクティブでないコンピュータの検知
	13.12 HTTPベースのネットワークモニタ
	13.13 ポートのフォワード、リダイレクト
	13.14 プロクシでSSLトンネリング
	13.15 ダイナミックIPアドレスのアップデート
	13.16 IRCに接続してログを記録する
	13.17 LDAPサーバへのアクセス

14章 ウェブプログラミング
	14.0 イントロダクション
	14.1 CGIの動作確認
	14.2 CGIスクリプトでURLを扱う
	14.3 CGIでファイルのアップロード
	14.4 ウェブページの存在確認
	14.5 HTTPにおけるcontent typeの確認
	14.6 HTTPファイル転送のレジューム
	14.7 クッキーの処理
	14.8 認証の必要なプロクシを通じたHTTPSサイト巡回
	14.9 Jythonでサーブレットを書く
	14.10 Internet Explorerのクッキーを探す
	14.11 OPMLファイルの生成
	14.12 RSSフィードの収集
	14.13 テンプレートを使ってデータをウェブ化
	14.14 任意のオブジェクトをNevowでウェブ化

15章 分散プログラミング
	15.0 イントロダクション
	15.1 XML-RPCのメソッドコールをする
	15.2 XML-RPCサーバ
	15.3 MedusaによるXML-RPC
	15.4 XML-RPCサーバをリモートから終了可能に
	15.5 SimpleXMLRPCServerの小技いろいろ
	15.6 wxPythonでXML-RPCサーバにGUIを
	15.7 TwistedのPerspective Brokerを使う
	15.8 CORBAサーバとクライアント
	15.9 telnetlibでリモートログイン
	15.10 SSHでリモートログイン
	15.11 SSLクライアントの認証

付録A Pythonと日本語処理について
	A.1 Pythonで日本語を使う
	A.2 ソースコードに日本語が使いたい

索引