6.1 標準モジュール os

 

このモジュールはposixのようなOS依存の組み込みモジュールをインポートする よりも、より移植性の高い方法でオペレーションシステム(OS)に依存する機能を使う 手段を提供します。

オプションの組み込みモジュールposixが利用可能であれば、このモジュール はposixと同じ関数とデータをエクスポートします。 それ以外の場合は、macのようなOS依存の組み込みモジュールを探し、 そこで見つけた同じ関数とデータをエクスポートします。 すべてのパイソンの組み込みOS依存モジュールの設計は、同じような機能が利用可能 であればできるだけ同じインタフェースを使うようになっています。 例えば、関数os.stat(file)はPOSIXインタフェースと互換性のある 形式でfileに関するstat情報を返します。

特定のOSに対する特別な拡張機能もosモジュールを通して利用可能できまが、 もちろんそれを使うことは移植性に対する問題を発生させます。

注:osが最初にインポートされた後は、OS依存の組み込みモジュールから 直接使うかわりに関数をosから使うことに対してパフォーマンス上の ハンディはありません。従って、osを使わない理由はどこにも ありません

適当なOS依存モジュールがエクスポートするすべてに加えて、以下の変数と関数は 常にosによってエクスポートされます。

name
インポートされたOS依存モジュールの名前です。現在次の名前が登録されています。 'posix', 'nt', 'dos', 'mac'

path
例えば、posixpathまたはmacpathのような パス名操作に関する対応するOS依存の標準モジュールです。 従って(適切なインポートが行われるので)、os.path.split(file)posixpath.split(file)と同じですがより移植性は高くなります。

curdir
カレントディレクトリを参照するためにOSで使われる文字列定数です。 例えば、POSIXに対しては'.'でMacintoshに対しては':'です。

pardir
親ディレクトリを参照するためにOSで使われる文字列定数です。 例えば、POSIXに対しては'..'でMacintoshに対しては'::'です。

sep
パス名の要素を分けるためにOSで使われる文字です。 例えば、POSIXに対しては'/'でMacintoshに対しては':'です。
注:これを知っていてもパス名をパースしたり結合したりするには十分ではありません。 その場合はos.path.split()os.path.join()を使う方がベターです が、これを知っていればたまに役に立つこともあります。

altsep
パス名の要素を分けるためにOSで使われる文字の代替文字ですが、一つのセパレータ 文字しかないときはNoneになります。 sepがバックスラッシュであるDOS/Windowsシステムでは、これは '/'にセットされています。

pathsep
サーチパス要素($PATH)内など)を分けるためにOSで慣例的に使われる 文字です。例えば、POSIXに対しては':'でMS-DOSに対しては';' です。

defpath
その環境が'PATH'をキーとして持たないときにexec*p*()によって 使われるデフォルトのサーチパスです。

execl (path, arg0, arg1, ...)
これはexecv(path, (arg0, arg1, ...)) と同じです。

execle (path, arg0, arg1, ..., env)
これは execve(path, (arg0, arg1, ...), env) と同じです。

execlp (path, arg0, arg1, ...)
これは execvp(path, (arg0, arg1, ...))と同じです。

execvp (path, args)
これはexecv(path, args)に似ていますが、 ディレクトリ一覧内で実行ファイルを探す際にシェルの動作を模倣します。 ディレクトリ一覧はenviron['PATH']から得られます。

execvpe (path, args, env)
これはexecve()execvp()の組み合わせです。 ディレクトリ一覧はenviron['PATH']から得られます。

(関数execv()execve()はここでは記述されていません。 なぜならそれらはOS依存モジュールで実装されているからです。 OS依存モジュールがこれらを定義していない場合、それに依存する関数は例外を 発生させます。それらはposixモジュールの節で他のすべての OS依存モジュールからosがインポートする関数と一緒に記述されています。)

guido@python.org