10.10。 標準ライブラリの簡単なツアー
10.1。 オペレーティングシステムインターフェイス
os モジュールは、オペレーティングシステムと対話するための数十の機能を提供します。
from os import *
の代わりにimport os
スタイルを使用してください。 これにより、 os.open()が、動作が大きく異なる組み込みの open()関数をシャドウイングするのを防ぎます。
組み込みの dir()および help()関数は、 os のような大きなモジュールを操作するためのインタラクティブな補助として役立ちます。
毎日のファイルおよびディレクトリ管理タスクの場合、 shutil モジュールは、より使いやすい高レベルのインターフェイスを提供します。
10.3。 コマンドライン引数
一般的なユーティリティスクリプトは、多くの場合、コマンドライン引数を処理する必要があります。 これらの引数は、 sys モジュールの argv 属性にリストとして格納されます。 たとえば、次の出力は、コマンドラインでpython demo.py one two three
を実行した結果です。
getopt モジュールは、Unix getopt()関数の規則を使用して sys.argv を処理します。 より強力で柔軟なコマンドライン処理は、 argparse モジュールによって提供されます。
10.4。 エラー出力リダイレクトとプログラム終了
sys モジュールには、 stdin 、 stdout 、および stderr の属性もあります。 後者は、 stdout がリダイレクトされた場合でも、警告とエラーメッセージを発行してそれらを表示するのに役立ちます。
スクリプトを終了する最も直接的な方法は、sys.exit()
を使用することです。
10.5。 文字列パターンマッチング
re モジュールは、高度な文字列処理のための正規表現ツールを提供します。 複雑なマッチングと操作の場合、正規表現は簡潔で最適化されたソリューションを提供します。
単純な機能のみが必要な場合は、読み取りとデバッグが簡単な文字列メソッドが推奨されます。
10.7。 インターネット・アクセス
インターネットにアクセスし、インターネットプロトコルを処理するためのモジュールがいくつかあります。 最も単純な2つは、URLからデータを取得するための urllib2 と、メールを送信するための smtplib です。
(2番目の例では、ローカルホストで実行されているメールサーバーが必要であることに注意してください。)
10.8。 日付と時刻
datetime モジュールは、単純な方法と複雑な方法の両方で日付と時刻を操作するためのクラスを提供します。 日付と時刻の計算はサポートされていますが、実装の焦点は、出力のフォーマットと操作のための効率的なメンバー抽出にあります。 このモジュールは、タイムゾーンを認識するオブジェクトもサポートしています。
10.10。 パフォーマンス測定
一部のPythonユーザーは、同じ問題に対するさまざまなアプローチの相対的なパフォーマンスを知ることに深い関心を持っています。 Pythonは、これらの質問にすぐに答える測定ツールを提供します。
たとえば、引数を交換する従来のアプローチの代わりに、タプルのパッキングおよびアンパック機能を使用したくなる場合があります。 timeit モジュールは、適度なパフォーマンス上の利点をすばやく示します。
timeit の細かいレベルとは対照的に、 profile および pstats モジュールは、コードのより大きなブロック内のタイムクリティカルセクションを識別するためのツールを提供します。
10.11。 品質管理
高品質のソフトウェアを開発するための1つのアプローチは、開発時に各機能のテストを作成し、開発プロセス中にそれらのテストを頻繁に実行することです。
doctest モジュールは、モジュールをスキャンし、プログラムのdocstringに埋め込まれたテストを検証するためのツールを提供します。 テストの構築は、一般的な呼び出しとその結果を切り取ってdocstringに貼り付けるのと同じくらい簡単です。 これにより、ユーザーに例を提供することでドキュメントが改善され、doctestモジュールがコードがドキュメントに忠実であることを確認できるようになります。
unittest モジュールは、 doctest モジュールほど簡単ではありませんが、より包括的なテストのセットを別のファイルに保持できます。
10.12。 電池が含まれています
Pythonには「バッテリーを含む」という哲学があります。 これは、より大きなパッケージの洗練された堅牢な機能を通して最もよくわかります。 例えば:
- xmlrpclib および SimpleXMLRPCServer モジュールを使用すると、リモートプロシージャコールをほとんど簡単なタスクに実装できます。 モジュール名にもかかわらず、XMLの直接的な知識や処理は必要ありません。
- email パッケージは、MIMEやその他のRFC2822ベースのメッセージドキュメントを含む電子メールメッセージを管理するためのライブラリです。 実際にメッセージを送受信する smtplib や poplib とは異なり、電子メールパッケージには、複雑なメッセージ構造(添付ファイルを含む)を構築またはデコードし、インターネットエンコーディングとヘッダープロトコルを実装するための完全なツールセットがあります。
- xml.dom および xml.sax パッケージは、この一般的なデータ交換形式の解析を強力にサポートします。 同様に、 csv モジュールは、一般的なデータベース形式での直接読み取りと書き込みをサポートします。 これらのモジュールとパッケージを組み合わせることで、Pythonアプリケーションと他のツール間のデータ交換が大幅に簡素化されます。
- 国際化は、 gettext 、 locale 、および codecs パッケージを含む多くのモジュールによってサポートされています。