サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
TGS2024
ja.pymotw.com
M3U を RSS に変換する¶ 例えば、私は、デモテープを podcast で配布できるフォーマットに変換する m3utorss というアプリケーションを友だちの Patrick のために作りました。 このプログラムへの入力は、配布する mp3 ファイルを再生する1つ以上の m3u ファイルです。その出力は、RSS フィードのように見える XML のブロブです(シンプルに使用するために標準出力に出力される)。その入力を処理するには、ファイル名のリストを繰り返し処理する必要があります。 それぞれのファイルをオープンする ファイルから行を読み込む その行が mp3 ファイルを参照しているなら解析する mp3 ファイルだったら、RSS フィードに必要な情報を展開する その結果を表示する 私は手作業で全てのファイルを扱うことができました。その作業は複雑ではなく、いくつかテストしてエラーも適切に扱
ページコンテンツ random – 疑似乱数の生成 乱数の生成 シード (種) 状態を保存する ランダムな整数 ランダムな要素を選ぶ 順列 同時に複数生成する SystemRandom 不均一分布 正規分布 近似 指数関数 角度 サイズ ナビゲーション コンテンツテーブル 前: operator – ビルトイン演算子に対する関数インタフェース 次: インターネットデータ操作 This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性があります。
HMAC アルゴリズムは、潜在的に脆弱性のあるところで格納されるデータ、もしくはアプリケーション間で受け渡しする情報の整合性検証に使用されます。基本的な考え方は、共有秘密鍵を組み合わせた実際のデータの暗号化ハッシュを生成することです。それにより生成されたハッシュは、秘密鍵を転送することなく、信頼性を決定する格納メッセージや通信そのものをチェックするために使用されます。 免責事項: 私はセキュリティの専門家ではありません。HMAC の詳細は RFC 2104 を調べてください。 import hmac digest_maker = hmac.new('secret-shared-key-goes-here') f = open('lorem.txt', 'rb') try: while True: block = f.read(1024) if not block: break digest
ページコンテンツ urlparse – URL を部分文字列に分割する 解析する 再構築 結合 ナビゲーション コンテンツテーブル 前: urllib2 – URL をオープンするライブラリ 次: uuid – 汎用一意識別子 This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性があります。
ページコンテンツ Queue – スレッドセーフな FIFO の実装 基本的な FIFO キュー LIFO キュー 優先キュー スレッドでキューを使用する ナビゲーション コンテンツテーブル 前: sched – 汎用イベントスケジューラ 次: weakref – オブジェクトのガベージコレクション可能な参照 This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性があります。
pickle モジュールは任意の Python オブジェクトをバイトデータに変換するアルゴリズムを実装します。この処理もまたオブジェクトの シリアライズ と呼ばれます。バイトストリームは転送または格納されて、後で同じ特性を持つ新たなオブジェクトを作成して再構築されるオブジェクトを表します。 cPickle モジュールは同じアルゴリズムを Python ではなく C 言語で実装します。それは Python の実装よりも何倍か速いですが、ユーザは Pickle からサブクラス化することができません。サブクラス化が重要ではない用途なら、おそらく cPickle を使いたくなるでしょう。
Note Unix シグナルハンドラでプログラミングすることは普通以上の努力が必要です。本稿はシグナルの入門です。全てのプラットホーム上で正しくシグナルを利用することの詳細は説明していません。Unix のバージョンを横断して標準仕様があり、また変形した仕様もあります。そのため、実行して問題があれば使用中の OS のドキュメントを調べてください。 シグナルはあるイベントをプログラムへ通知するオペレーティングシステムの機能で、非同期にその通知を受け取ります。シグナルはそのシステムが生成するか、1つのプロセスから他のプロセスへ送信されます。シグナルはプログラムの通常処理の流れを中断させるので、シグナルを受信したら何らかの操作(特に I/O)でエラーを発生させることができます。 シグナルは整数値で識別され、オペレーティングシステムの C 言語のヘッダに定義されています。Python は signa
linecache モジュールは、Python のソースファイルを扱うときに Python 標準ライブラリ全体で広く使用されています。そのキャッシュの実装は、メモリ内のディクショナリへ解析した行単位で、単純にファイルのコンテンツを保持します。その API はリストにインデクシングすることで要求された行を返します。これにより、ファイルを(何回も)読み込んでから、必要な部分を見つけるために行を解析する時間を節約します。特にエラーリポートのためにトレースバック情報を生成するようなときに、同じファイルから複数行を探すと便利です。 import os import tempfile lorem = '''Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus eget elit. In posuere mi non risu
ページコンテンツ trace – 実行された通りに Python コードを追跡する コマンドラインインタフェース トレース実行 コードカバレッジ 呼び出し関係 プログラミングインタフェース 結果データを保存する Trace オプション ナビゲーション コンテンツテーブル 前: timeit – 小さな Python コードの実行時間を計る 次: Python ランタイムサービス This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性があります。
XML ドキュメントを解析する¶ 解析された XML ドキュメントは、XML ドキュメントのノードをネストさせる方法に基づいてツリー構造に関連付けた ElementTree と Element オブジェクトによってインメモリで表されます。 ドキュメント全体を解析する¶ ドキュメント全体を parse() で解析すると ElementTree インスタンスが返されます。このツリーは入力ドキュメントの全てのデータを解釈して、ツリーのノードは適切な位置で検索や操作ができます。この柔軟性は解析されたドキュメントをちょっと扱うには簡単ですが、ドキュメント全体を一度に読み込む必要があるので、イベントベースの解析方法よりも普通はより多くのメモリを使用します。 OPML アウトラインとして表されるポッドキャストのリストをサンプルに、シンプルなドキュメントでは、メモリ使用量は少なくて重要ではありません。 <
ページコンテンツ math – 数学に関する関数 特別な定数 例外値のテスト 整数への変換 代替の表現 正負の符号 一般的によく使う計算 指数と対数 角度 三角法 双曲線関数 特殊関数 ナビゲーション コンテンツテーブル 前: itertools – 効率的なループ処理のためのイテレータ関数 次: operator – ビルトイン演算子に対する関数インタフェース This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性があります。
ページコンテンツ XML ドキュメントを作成する 要素のノードを組み立てる 人が読み易い XML 要素のプロパティを設定する ノードのリストからツリーを構築する ストリームへ XML をシリアライズする ナビゲーション コンテンツテーブル 前: XML ドキュメントを解析する 次: 国際化 This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性があります。 XML ドキュメントを作成する¶ XML の構文解析に加えて、 xml.etree.ElementTree はアプリケーションで組み立てた Element オブジェクトから一般的な XML ドキュメントを作成する機能も提供します。ド
argparse モジュールは optparse に置き換わるものとして Python 2.7 で追加されました。 argparse の実装は optparse へ簡単に追加されない機能を提供しますが、後方互換性のない API の変更を必要とします。そのために optparse に置き換わる新たなライブラリとして設けられました。 optparse もそのままサポートされますが、新しい機能が実装されることはないと思われます。 optparse と比較する¶ argparse の API は optparse が提供するものとよく似ています。そして、多くのケースでは argparse はクラス名やメソッドを変更すると、そのまま置き換えて使用できます。そうとは言え、そのままでは使用できない互換性のない新機能も少しだけあります。 既存のプログラムをアップグレードするかどうかは、基本的にケースバイケ
BaseHTTPServer モジュールは、HTTP サーバを構築するベースクラスを作るために SocketServer モジュールのクラスを使用します。 HTTPServer は直接的に使用できますが、 BaseHTTPRequestHandler は各プロトコルメソッド(GET, POST 等)を扱うように拡張するためにあります。 HTTP GET¶ リクエストハンドラクラスの HTTP メソッドをサポートするために、引数を取らない do_METHOD() メソッドを実装してください。 METHOD の部分は実際の HTTP メソッドの名前に置き換えます。例えば、 do_GET(), do_POST() 等になります。一貫性をもたせるためにこれらのメソッドは引数を受け取りません。全てのリクエストのパラメータは BaseHTTPRequestHandler へ渡されて、リクエストインスタ
textwrap モジュールは、人間が見易いように表示したいときにテキストを整形するのに使用されます。多くのテキストエディタにある、段落内のテキストの折り返しや詰め込みといった機能がプログラミングできます。 サンプルデータ¶ サンプルプログラムは、以下の textwrap_example.py で sample_text を使用します。 sample_text = ‘’’ The textwrap module can be used to format text for output in situations where pretty-printing is desired. It offers programmatic functionality similar to the paragraph wrapping or filling features found in many t
メールを送信する¶ SMTP の一般的な用途はメールサーバへ接続してメールを送信することです。メールサーバのホスト名とポート番号は引数としてコンストラクタに渡すか、明示的に connect() メソッドで指定します。接続した時点でエンベロープパラメータとメッセージ本文と共に sendmail() を呼び出してください。smtplib はコンテンツやヘッダを全く変更しないので、メッセージのテキストは RFC 2882 完全準拠のメッセージであるべきです。つまり自分で From や To をヘッダに追加するということを意味します。 import smtplib import email.utils from email.mime.text import MIMEText # メッセージを作成する msg = MIMEText('This is the body of the message.'
ページコンテンツ プロセス間通信 プロセスへメッセージを渡す プロセス間でシグナルを送る リソースへのアクセスを制御する 同期オペレーション リソースへの並列アクセスを制御する 共有状態を管理する 共有ネームスペース プロセスプール ナビゲーション コンテンツテーブル 前: multiprocessing の基本 次: multiprocessing で MapReduce を実装する This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性があります。 プロセス間通信¶ スレッドのように、マルチプロセスの一般的な用途は並列で実行する複数のワーカーにジョブを分割することです。複数プロセス
import profile def fib(n): # from http://en.literateprograms.org/Fibonacci_numbers_(Python) if n == 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2) def fib_seq(n): seq = [ ] if n > 0: seq.extend(fib_seq(n-1)) seq.append(fib(n)) return seq print 'RAW' print '=' * 80 profile.run('print fib_seq(20); print') $ python profile_fibonacci_raw.py RAW =====================================
csv モジュールは、スプレッドシートやデータベースからデータをエクスポートして、一般的に カンマ区切り (CSV) フォーマットと言う、フィールド(列)とレコード(行)のテキストファイルを処理するのに便利です。カンマは1つのレコードを複数のフィールドに分割するために使用されます。 Note Python 2.5 の csv モジュールでは Unicode データをサポートしません。”ASCII NUL 文字の問題” もあります。UTF-8 か表示可能な ASCII 文字のみ使用することをお奨めします。
関数 対 Struct クラス¶ 構造化された値を扱うモジュールレベルの関数セットに加えて Struct クラス(Python 2.5 で追加)もあります。フォーマット指定子は、正規表現のように文字列フォーマットからコンパイルされた表現に変換されます。その変換処理はリソースを消費します。そのため Struct インスタンスを作成して、モジュールレベルの関数を使用せずにインスタンスメソッドを呼び出す方が普通は効率が良いです。この後の全サンプルは Struct クラスを使用します。 パックとアンパック¶ Struct は文字列へデータを パック します。そして、そのデータ型の特性により表現されるフォーマット指定子を用いて、文字列からデータを アンパック します。また、オプションでサイズやエンディアンも指定できます。詳細は 標準ライブラリドキュメント を参照してください。 このサンプルでは、フォ
sqlite3 モジュールは SQLite 関係データベースに対する DB-API 2.0 準拠のインタフェースを提供します。SQLite はアプリケーション内に組み込むように設計された、インプロセスデータベースであり、MySQL, PostgreSQL や Oracle のような独立したサーバプログラムではありません。SQLite は高速且つ柔軟で徹底的にテストされており、プロトタイピングのみならず、アプリケーションによっては本番環境にも使用できます。 データベースを作成する¶ SQLite データベースはファイルシステム上の1つのファイルに格納されます。ライブラリはそのファイルへのアクセスを管理し、複数のプログラムがそのファイルへ書き込むときにデータが破損しないようにロックします。そのファイルへの初回アクセス時にデータベースが作成されますが、アプリケーションはデータベース内のテーブル定
ページコンテンツ threading – スレッドによる並列処理を管理する Thread オブジェクト カレントスレッドを決める デーモンと非デーモンスレッド 全てのスレッドを列挙する スレッドをサブクラス化する タイマースレッド スレッド間でシグナルを送る リソースへのアクセスを制御する 再入可能なロック コンテキストマネージャとしてのロック スレッドを同期する リソースへの同時アクセスを制限する スレッド固有のデータ ナビゲーション コンテンツテーブル 前: オプション OS サービス 次: mmap – メモリマップファイル This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性
glob API はとてもシンプルですが、このモジュールは大きなチカラを秘めています。glob はあるパターンにマッチする名前でファイルシステム上のファイルリストを探すプログラムのどんな状況においても役に立ちます。もし特定の拡張子、接尾辞、又は中間に共通の文字列を持った全ファイル名のリストが必要なら、自分でディレクトリのコンテンツを精査するコードを書く代わりに glob を使用してください。 glob のパターンルールは正規表現ではありません。その代わり、標準 Unix パス拡張ルールに準拠します。数個だけ特殊な文字があり、2種類の異なるワイルドカード、文字範囲がサポートされます。そのパターンルールはファイル名の部分に対して適用されます(パス区切り文字 / で停止します)。そのパターンのパスは絶対パスか相対パスです。シェル変数名やチルダ(~)は展開されません。
ページコンテンツ datetime – 日付/時間の操作 時間 日付 タイムデルタ 日付計算 値の比較 日付と時間を組み合わせる フォーマットと解析 タイムゾーン ナビゲーション コンテンツテーブル 前: array – データ型固定のシーケンス 次: calendar – 日付の処理 This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性があります。
Python Module of the Week の連載、PyMOTW は Python 標準ライブラリの短いサンプルを通して学ぶチュートリアルです。現在のバージョンは 1.132, 最終更新は Feb 17, 2013 で ConfigParser モジュールを説明します。
ページコンテンツ multiprocessing で MapReduce を実装する SimpleMapReduce ファイルの単語を数える ナビゲーション コンテンツテーブル 前: プロセス間通信 次: readline – GNU readline ライブラリのインタフェース This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性があります。 multiprocessing で MapReduce を実装する¶ Pool クラスは1サーバで簡単な MapReduce 実装を作成するために使用することができます。それは分散処理の最大限の利点を得るものではないですが、ある問題を個々の分
© Copyright Doug Hellmann. | | Last updated on Feb 17, 2013. | Created using Sphinx. | Design based on "Leaves" by SmallPark
subprocess モジュールは新しくプロセスを生成して、そのプロセスを扱う一貫したインタフェースを提供します。それは従来からある他のモジュールよりも高レベルなインタフェースを提供します。そして os.system(), os.spawn*(), os.popen*(), popen2.*() や commands.*() のような従来の関数の置き換えを目的としています。 subprocess モジュールと他のモジュールとの比較を分かり易くするために os や popen を使用したサンプルを再作成して紹介します。 subprocess モジュールは Popen とそのクラスを使用する複数のラッパ関数を定義します。 Popen のコンストラクタは新たなプロセス生成を簡単にする複数の引数を受け取り、パイプを経由してその親プロセスと通信します。それは他のモジュールの置き換えられる全ての機能や
次のページ
このページを最初にブックマークしてみませんか?
『ja.pymotw.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く