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
を実行した結果です。
argparse モジュールは、コマンドライン引数を処理するためのより高度なメカニズムを提供します。 次のスクリプトは、表示する1つ以上のファイル名とオプションの行数を抽出します。
python top.py --lines=5 alpha.txt beta.txt
を使用してコマンドラインで実行すると、スクリプトはargs.lines
を5
に、args.filenames
を['alpha.txt', 'beta.txt']
に設定します。
10.4。 エラー出力リダイレクトとプログラム終了
sys モジュールには、 stdin 、 stdout 、および stderr の属性もあります。 後者は、 stdout がリダイレクトされた場合でも、警告とエラーメッセージを発行して、それらを表示するのに役立ちます。
スクリプトを終了する最も直接的な方法は、sys.exit()
を使用することです。
10.5。 文字列パターンマッチング
re モジュールは、高度な文字列処理のための正規表現ツールを提供します。 複雑なマッチングと操作の場合、正規表現は簡潔で最適化されたソリューションを提供します。
単純な機能のみが必要な場合は、読み取りとデバッグが簡単な文字列メソッドが推奨されます。
10.6。 数学
math モジュールは、浮動小数点演算の基礎となるCライブラリ関数へのアクセスを提供します。
random モジュールは、ランダムな選択を行うためのツールを提供します。
statistics モジュールは、数値データの基本的な統計プロパティ(平均、中央値、分散など)を計算します。
SciPyプロジェクト< https://scipy.org >には、数値計算用の他の多くのモジュールがあります。
10.7。 インターネット・アクセス
インターネットにアクセスし、インターネットプロトコルを処理するためのモジュールがいくつかあります。 最も単純な2つは、URLからデータを取得するための urllib.request と、メールを送信するための smtplib です。
(2番目の例では、ローカルホストで実行されているメールサーバーが必要であることに注意してください。)
10.8。 日付と時刻
datetime モジュールは、単純な方法と複雑な方法の両方で日付と時刻を操作するためのクラスを提供します。 日付と時刻の計算はサポートされていますが、実装の焦点は、出力のフォーマットと操作のための効率的なメンバー抽出にあります。 このモジュールは、タイムゾーンを認識するオブジェクトもサポートしています。
10.9。 データ圧縮
一般的なデータのアーカイブおよび圧縮形式は、 zlib 、 gzip 、 bz2 、 lzma 、 zipfile [などのモジュールで直接サポートされています。 X161X]および tarfile 。
10.10。 パフォーマンス測定
一部のPythonユーザーは、同じ問題に対するさまざまなアプローチの相対的なパフォーマンスを知ることに深い関心を持っています。 Pythonは、これらの質問にすぐに答える測定ツールを提供します。
たとえば、引数を交換する従来のアプローチの代わりに、タプルのパッキングおよびアンパック機能を使用したくなる場合があります。 timeit モジュールは、適度なパフォーマンス上の利点をすばやく示します。
timeit の細かいレベルとは対照的に、 profile および pstats モジュールは、コードのより大きなブロック内のタイムクリティカルセクションを識別するためのツールを提供します。
10.11。 品質管理
高品質のソフトウェアを開発するための1つのアプローチは、開発時に各機能のテストを作成し、開発プロセス中にそれらのテストを頻繁に実行することです。
doctest モジュールは、モジュールをスキャンし、プログラムのdocstringに埋め込まれたテストを検証するためのツールを提供します。 テストの構築は、一般的な呼び出しとその結果を切り取ってdocstringに貼り付けるのと同じくらい簡単です。 これにより、ユーザーに例を提供することでドキュメントが改善され、doctestモジュールがコードがドキュメントに忠実であることを確認できるようになります。
unittest モジュールは、 doctest モジュールほど簡単ではありませんが、より包括的なテストのセットを別のファイルに保持できます。
10.12。 電池が含まれています
Pythonには「バッテリーを含む」という哲学があります。 これは、より大きなパッケージの洗練された堅牢な機能を通して最もよくわかります。 例えば:
- xmlrpc.client および xmlrpc.server モジュールを使用すると、リモートプロシージャコールをほとんど簡単なタスクに実装できます。 モジュール名にもかかわらず、XMLの直接的な知識や処理は必要ありません。
- email パッケージは、MIMEおよびその他の RFC 2822 ベースのメッセージドキュメントを含む電子メールメッセージを管理するためのライブラリです。 実際にメッセージを送受信する smtplib や poplib とは異なり、電子メールパッケージには、複雑なメッセージ構造(添付ファイルを含む)を構築またはデコードし、インターネットエンコーディングとヘッダープロトコルを実装するための完全なツールセットがあります。
- json パッケージは、この一般的なデータ交換形式の解析を強力にサポートします。 csv モジュールは、データベースやスプレッドシートで一般的にサポートされている、カンマ区切り値形式のファイルの直接読み取りと書き込みをサポートします。 XML処理は、 xml.etree.ElementTree 、 xml.dom 、および xml.sax パッケージでサポートされています。 これらのモジュールとパッケージを組み合わせることで、Pythonアプリケーションと他のツール間のデータ交換が大幅に簡素化されます。
- sqlite3 モジュールはSQLiteデータベースライブラリのラッパーであり、わずかに非標準のSQL構文を使用して更新およびアクセスできる永続データベースを提供します。
- 国際化は、 gettext 、 locale 、および codecs パッケージを含む多くのモジュールによってサポートされています。