# 13 `distutils.util` -- その他のユーティリティ関数

このモジュールは他のユーティリティモジュールにあわないものを提供しています。

`get_platform`( | )

  現在のプラットフォームを示す文字列を返します。 これはプラットフォーム依存のビルドディレクトリやプラットフォーム依存の 配布物を区別するために使われます。 典型的には、('os.uname()'のように)OSの名前とバージョン、アーキテクチャ を含みますが、厳密にはOSに依存します。たとえば IRIXではアーキテクチャ はそれほど重要ではありません(IRIXはSGIのハードウェアだけで動作する)が、 Linuxではカーネルのバージョンはそれほど重要ではありません。

  返り値の例:

  - `linux-i586`
  - `linux-alpha`
  - `solaris-2.6-sun4u`
  - `irix-5.3`
  - `irix64-6.2`

  POSIX でないプラットフォームでは、今のところ単に`sys.platform` が返されます。

`convert_path`( | pathname)

  'pathname' をファイルシステムで利用できる名前にして返します。 すなわち、'/'で分割し、現在のディレクトリセパレータで接続しなおします。 セットアップスクリプト中のファイル名はUnixスタイルで提供され、実 際に利用する前に変換する必要があるため、この関数が必要になります。 もし pathname の最初または最後が スラッシュの場合、Unix的でな いシステムでは`ValueError`が起きます。

`change_root`( | new_root, pathname)

  pathnameの前にnew_rootを追加したものを返します。 もしpathnameが相対パスなら、 "`os.path.join(new_root,pathname)`"と等価です。そうでなければ、 pathnameを相対パスに変換したあと接続します。これはDOS/Windows ではトリッキーな作業になります。

`check_environ`( | )

  'os.environ'に、ユーザがconfigファイル、コマンドラインオプションなどで 利用できることを保証している環境変数があることを確認します。 現在は以下のものが含まれています:
  - HOME - ユーザのホームディレクトリ (Unix のみ)
  - PLAT - ハードウェアとOSを含む現在のプラットフォームの説 明。 ( `get_platform()`を参照)

`subst_vars`( | s, local_vars)

  shell/Perlスタイルの変数置換をsについて行います。 全ての`$`に名前が続いたものは変数とみなされ、辞書local_varsで みつかった値に置換されます。local_varsで見つからなかった場合には `os.environ`で置換されます。 os.environは最初にある値を含んでいることをチェックされます: `check_environ()`を参照。 local_vars or `os.environ`のどちらにも値が見つからなかった 場合、`ValueError`を起こします。

  これは完全な文字列挿入関数ではないことに注意してください。 `$variable`の名前には大小英字、数字、アンダーバーだけを含むこと ができます。 { } や を使った引用形式は利用できません。

`grok_environment_error`( | exc[, prefix=tex2html_deferred"`'error: '`"])

  例外オブジェクト `EnvironmentError` (`IOError` ま たは `OSError`) から、エラーメッセージを生成します。 Python 1.5.1 またはそれ以降の形式を扱い、ファイル名を含んでいない例外 オブジェクトも扱います。このような状況はエラーが2つのファイルに関係す る操作、たとえば`rename()`や`link()`で発生します。 prefixをプレフィクスに持つエラーメッセージを返します。

`split_quoted`( | s)

  文字列をUnixのシェルのようなルール(引用符やバックスラッシュの扱い)で分 割します。つまり、バックスラッシュでエスケープされるか、引用符で囲まれ ていなければ各語はスペースで区切られます。一重引用符と二重引用符は同じ 意味です。引用符もバックスラッシュでエスケープできます。 2文字でのエスケープシーケンスに使われているバックスラッシュは削除され、 エスケープされていた文字だけが残ります。引用符は文字列から削除されます。 語のリストが返ります。

`execute`( | func, args[, msg=`None`, verbose=`0`, dry_run=`0`])

  外部に影響するいくつかのアクション(たとえば、ファイルシステムへの書き 込み)を実行します。そのようなアクションはdry_runフラグで無効にす る必要があるので特別です。この関数はその繁雑な処理を行います。 関数と引数のタプル、(実行する「アクション」をはっきりさせるための)表示 に使われる任意のメッセージを渡してください。

`strtobool`( | val)

  真偽値をあらわす文字列を真(1)または偽(0)に変換します。

  真の値は `y`, `yes`, `t`, `true`, `on` そして `1`です。偽の値は `n`, `no`, `f`, `false`, `off` そして `0`です。 valが上のどれでもない時は `ValueError`を起こします。

`byte_compile`( | py_files[, optimize=`0`, force=`0`, prefix=`None`, base_dir=`None`, verbose=`1`, dry_run=`0`, direct=`None`])

  Pythonソースファイル群をバイトコンパイルして.pycまたは .pyoファイルを同じディレクトリに作成します。py_filesはコ ンパイルされるファイルのリストです。.pyでおわっていないファイル はスキップされます。optimizeは以下のどれかです:
  - `0` - 最適化しない (.pycファイルを作成します)
  - `1` - 通常の最適化 ("`python -O`"のように)
  - `2` - さらに最適化 ("`python -OO`"のように)

  もしforceが真なら、全てのファイルがタイムスタンプに関係なく再コ ンパイルされます。

  バイトコードファイルにエンコードされるソースファイル名は、デフォルトでは py_filesが使われます。これをprefixとbase_dirで変更す ることができます。 prefixはそれぞれのソースファイル名から削除される文字列で、 base_dirは(prefixを削除したあと)先頭に追加されるディレクト リ名です。 任意にprefixとbase_dirのどちらか、両方を与える(与えない)こ とができます。

  もしdry_runが真なら、ファイルシステムに影響することは何もされません。

  バイトコンパイルは現在のインタプリタプロセスによって標準の `py_compile`モジュールを使って直接行われるか、テンポラリスクリ プトを書いて間接的に行われます。 通常は`byte_compile()`に直接かそうでないかをまかせます (詳細についてはソースをごらんください)。 directフラグは関節モードで作成されたスクリプトで使用されます。 何をやっているか理解していない時は`None`のままにしておいてください。

`rfc822_escape`( | header)

  RFC 822ヘッダに含められるよう加工したheaderを返します。 改行のあとには8つのスペースが追加されます。この関数は文字列に他の変更 はしません。