この本は、Pythonそのものを教えようとする本ではなく、特定のタスクに対応するための特定の概念やテクニックを(ときにトリックも)示したものである。収録したレシピは、初歩的で一般性の高いタスクから、高度、あるいは専門的なタスクまで、最上のテクニックを示している。あなたのPythonレベル、もっと一般的に言えばプログラミングスキルが、どの程度のものであるにせよ、この本から何らかの価値あるものを得ていただけると信じるものである。――Pythonコミュニティの英知を集めた実践的なコードを収録。Pythonを使いこなすための決定版。
Python クックブック 第2版
Alex Martelli, Anna Martelli Ravenscroft, David Ascher 著、鴨澤 眞夫、當山 仁健、吉田 聡、吉宗 貞紀、他 訳
- TOPICS
- クックブック , Programming , Python
- 発行年月日
- 2007年06月
- PRINT LENGTH
- 652
- ISBN
- 978-4-87311-276-3
- 原書
- Python Cookbook, Second Edition
- FORMAT
- Print PDF
目次
訳者まえがき まえがき 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 ソースコードに日本語が使いたい 索引