### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python 標準ライブラリ »
- 15. 汎用オペレーティングシステムサービス »

# 15.1. `os` — 雑多なオペレーティングシステムインタフェース

このモジュールは、OS依存の機能をポータブルな方法で利用する方法を提供します。単純なファイルの読み書きについては、 `open()` を参照してください。パス操作については、 `os.path` モジュールを参照してください。コマンドラインに与えられた全てのファイルから行を読み込んでいくには、 `fileinput` モジュールを参照してください。一時ファイルや一時ディレクトリの作成については、 `tempfile` モジュールを参照してください。高レベルなファイルとディレクトリの操作については、 `shutil` モジュールを参照してください。

利用可能性に関する注意:

- Pythonの、全てのOS依存モジュールの設計方針は、可能な限り同一のインタフェースで同一の機能を利用できるようにする、というものです。例えば、 `os.stat(path)` は path に関する stat 情報を、 (POSIXを元にした)同じフォーマットで返します。
- 特定のオペレーティングシステム固有の拡張も `os` を介して利用することができますが、これらの利用はもちろん、可搬性を脅かします！
- 「利用できる環境: Unix」の意味はこの関数が Unix システムにあることが多いということです。このことは特定の OS における存在を主張するものではありません。
- 特に記述がない場合、「利用できる環境: Unix」と書かれている関数は、 Unix をコアにしている Mac OS X でも利用することができます。

ノート

このモジュール内のすべての関数は、間違った、あるいはアクセス出来ないファイル名やファイルパス、その他型が合っていてもOSが受理しない引数に対して、 `OSError` を送出します。

exception `os.``error`

  組み込みの `OSError` 例外に対するエイリアス

`os.``name`

  import されているオペレーティング・システム依存モジュールの名前です。現在次の名前が登録されています: `'posix'`, `'nt'`, `'os2'`, `'ce'`, `'java'`, `'riscos'`.

## 15.1.1. プロセスのパラメタ

これらの関数とデータ要素は、現在のプロセスおよびユーザに対する情報提供および操作のための機能を提供しています。

`os.``environ`

  環境変数の値を表すマップ型オブジェクトです。例えば、 `environ['HOME']` は( いくつかのプラットフォーム上での) あなたのホームディレクトリへのパスです。これは C の `getenv("HOME")` と等価です。

  このマップ型の内容は、 `os` モジュールの最初の import の時点、通常は Python の起動時に `site.py` が処理される中で取り込まれます。それ以後に変更された環境変数は `os.environ` を直接変更しない限り反映されません。

  プラットフォーム上で `putenv()` がサポートされている場合、このマップ型オブジェクトは環境変数に対するクエリと同様に変更するために使うこともできます。 `putenv()` はマップ型オブジェクトが修正される時に、自動的に呼ばれることになります。

  ノート

  `putenv()` を直接呼び出しても `os.environ` の内容は変わらないので、 `os.environ` を直接変更する方がベターです。

  ノート

  FreeBSD と Mac OS X を含むいつくかのプラットフォームでは、 `environ` の値を変更するとメモリリークの原因になる場合があります。システムの `putenv()` に関するドキュメントを参照してください。

  `putenv()` が提供されていない場合、このマッピングオブジェクトに変更を加えたコピーを適切なプロセス生成機能に渡して、子プロセスが修正された環境変数を利用するようにできます。

  プラットフォームが `unsetenv()` 関数をサポートしているならば、このマッピングからアイテムを取り除いて(delete)環境変数を消すことができます。 `unsetenv()` は `os.environ` からアイテムが取り除かれた時に自動的に呼ばれます。 `pop()` か `clear()` が呼ばれた時も同様です。

  バージョン 2.6 で変更.

`os.``chdir`(path)
`os.``fchdir`(fd)
`os.``getcwd`()

  これらの関数は、 ファイルとディレクトリ 節で説明されています。

`os.``ctermid`()

  プロセスの制御端末に対応するファイル名を返します。

  利用できる環境: Unix

`os.``getegid`()

  現在のプロセスの実効(effective)グループ id を返します。この id は現在のプロセスで実行されているファイルの “set id” ビットに対応します。

  利用できる環境: Unix

`os.``geteuid`()

  現在のプロセスの実効(effective)ユーザ id を返します。

  利用できる環境: Unix

`os.``getgid`()

  現在のプロセスの実際のグループ id を返します。

  利用できる環境: Unix

`os.``getgroups`()

  現在のプロセスに関連づけられた従属グループ id のリストを返します。

  利用できる環境: Unix

`os.``initgroups`(username, gid)

  システムの initgroups() を呼んで、指定された username がメンバーであるグループと gid でしていされたグループでグループアクセスリストを初期化する。

  利用できる環境: Unix

  バージョン 2.7 で追加.

`os.``getlogin`()

  現在のプロセスの制御端末にログインしているユーザ名を返します。ほとんどの場合、ユーザが誰かを知りたいときには環境変数 `LOGNAME` を、現在の実効ユーザ id のユーザ名を知りたいときには `pwd.getpwuid(os.getuid())[0]` を使うほうが便利です。

  利用できる環境: Unix

`os.``getpgid`(pid)

  プロセス id pid のプロセスのプロセス・グループ id を返します。もし pid が 0 ならば、現在のプロセスのプロセス・グループ id を返します。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``getpgrp`()

  現在のプロセス・グループの id を返します。

  利用できる環境: Unix

`os.``getpid`()

  現在のプロセス id を返します。

  利用できる環境: Unix、 Windows

`os.``getppid`()

  親プロセスの id を返します。

  利用できる環境: Unix

`os.``getresuid`()

  現在のプロセスの real, effective, saved user id を示す、 (ruid, euid, suid) のタプルを返します。

  利用できる環境: Unix

  バージョン 2.7 で追加.

`os.``getresgid`()

  現在のプロセスの real, effective, saved group id を示す、 (ruid, euid, suid) のタプルを返します。

  利用できる環境: Unix

  バージョン 2.7 で追加.

`os.``getuid`()

  現在のプロセスのユーザ id を返します。

  利用できる環境: Unix

`os.``getenv`(varname[, value])

  環境変数 varname が存在する場合にはその値を返し、存在しない場合には value を返します。 value のデフォルト値は `None` です。

  利用できる環境: 主な Unix 互換環境、Windows

`os.``putenv`(varname, value)

  varname と名づけられた環境変数の値を文字列 value に設定します。このような環境変数への変更は、 `os.system()`, `popen()` , `fork()` および `execv()` により起動された子プロセスに影響します。

  利用できる環境: 主な Unix 互換環境、Windows

  ノート

  FreeBSD と Mac OS X を含むいつくかのプラットフォームでは、 `environ` の値を変更するとメモリリークの原因になる場合があります。システムの putenv に関するドキュメントを参照してください。

  `putenv()` がサポートされている場合、 `os.environ` の要素に対する代入を行うと自動的に `putenv()` を呼び出します; しかし、 `putenv()` の呼び出しは `os.environ` を更新しないので、実際には `os.environ` の要素に代入する方が望ましい操作です。

`os.``setegid`(egid)

  現在のプロセスに実効グループ id をセットします。

  利用できる環境: Unix

`os.``seteuid`(euid)

  現在のプロセスに実効ユーザ id をセットします。

  利用できる環境: Unix

`os.``setgid`(gid)

  現在のプロセスにグループ id をセットします。

  利用できる環境: Unix

`os.``setgroups`(groups)

  現在のグループに関連付けられた従属グループ id のリストを groups に設定します。 groups はシーケンス型でなくてはならず、各要素はグループを特定する整数でなくてはなりません。この操作は通常、スーパユーザしか利用できません。

  利用できる環境: Unix

  バージョン 2.2 で追加.

`os.``setpgrp`()

  システムコール `setpgrp()` または `setpgrp(0, 0)()` のどちらかのバージョンのうち、 (実装されていれば) 実装されている方を呼び出します。機能については Unix マニュアルを参照してください。

  利用できる環境: Unix

`os.``setpgid`(pid, pgrp)

  システムコール `setpgid()` を呼び出して、 pid の id をもつプロセスのプロセスグループ id を pgrp に設定します。

  利用できる環境: Unix

`os.``setregid`(rgid, egid)

  現在のプロセスの real, effective group id を設定します。

  利用できる環境: Unix

`os.``setresgid`(rgid, egid, sgid)

  現在のプロセスの real, effective, saved group id を設定します。

  利用できる環境: Unix

  バージョン 2.7 で追加.

`os.``setresuid`(ruid, euid, suid)

  Set the current process’s real, effective, and saved user ids.

  利用できる環境: Unix

  バージョン 2.7 で追加.

`os.``setreuid`(ruid, euid)

  現在のプロセスに対して実際のユーザ id および実効ユーザ id を設定します。

  利用できる環境: Unix

`os.``getsid`(pid)

  システムコール `getsid()` を呼び出します。機能については Unix マニュアルを参照してください。

  利用できる環境: Unix

  バージョン 2.4 で追加.

`os.``setsid`()

  システムコール `setsid()` を呼び出します。機能については Unix マニュアルを参照してください。

  利用できる環境: Unix

`os.``setuid`(uid)

  現在のプロセスのユーザ id を設定します。

  利用できる環境: Unix

`os.``strerror`(code)

  エラーコード code に対応するエラーメッセージを返します。不明なエラーコードに対して `strerror()` が `NULL` を返す環境では、その場合に `ValueError` を送出します。

  利用できる環境: Unix, Windows

`os.``umask`(mask)

  現在の数値 umask を設定し、以前の umask 値を返します。

  利用できる環境: Unix, Windows

`os.``uname`()

  現在のオペレーティングシステムを特定する情報の入った 5 要素のタプルを返します。このタプルには 5 つの文字列: `(sysname, nodename, release, version, machine)` が入っています。システムによっては、ノード名を 8 文字、または先頭の要素だけに切り詰めます; ホスト名を取得する方法としては、 `socket.gethostname()` を使う方がよいでしょう、あるいは `socket.gethostbyaddr(socket.gethostname())` でもかまいません。

  利用できる環境: Unix互換環境

`os.``unsetenv`(varname)

  varname という名前の環境変数を取り消します。このような環境の変化は `os.system()`, `popen()` または `fork()` と `execv()` で開始されるサブプロセスに影響を与えます。

  利用できる環境: ほとんどの Unix 互換環境、Windows

  `unsetenv()` がサポートされている時には `os.environ` のアイテムの削除が対応する `unsetenv()` の呼び出しに自動的に翻訳されます。しかし、 `unsetenv()` の呼び出しは `os.environ` を更新しませんので、むしろ `os.environ` のアイテムを削除する方が好ましい方法です。

## 15.1.2. ファイルオブジェクトの生成

以下の関数は新しいファイルオブジェクトを作成します。(`open()` も参照してください)

`os.``fdopen`(fd[, mode[, bufsize]])

  ファイル記述子 fd に接続している、開かれたファイルオブジェクトを返します。引数 mode および bufsize は、組み込み関数 `open()` における対応する引数と同じ意味を持ちます。

  利用できる環境: Unix, Windows

  バージョン 2.3 で変更: 引数 mode は、指定されるならば、 `'r'`, `'w'`, `'a'` のいずれかの文字で始まらなければなりません。 そうでなければ `ValueError` が送出されます.

  バージョン 2.5 で変更: Unixでは、引数 mode が `'a'` で始まる時には O_APPEND フラグがファイル記述子に設定されます。 (ほとんどのプラットフォームで `fdopen()` 実装が既に行なっていることです).

`os.``popen`(command[, mode[, bufsize]])

  command への、または command からのパイプ入出力を開きます。戻り値はパイプに接続されている開かれたファイルオブジェクトで、 mode が `'r'` (標準の設定です) または `'w'` かによって読み出しまたは書き込みを行うことができます。引数 bufsize は、組み込み関数 `open()` における対応する引数と同じ意味を持ちます。 command の終了ステータス (`wait()` で指定された書式でコード化されています) は、 `close()` メソッドの戻り値として取得することができます。例外は終了ステータスがゼロ (すなわちエラーなしで終了) の場合で、このときには `None` を返します。

  利用できる環境: Unix, Windows

  バージョン 2.6 で撤廃: この関数は撤廃されました。 代わりに `subprocess` モジュールを利用してください。 特に、 古い関数を subprocess モジュールで置き換える 節をチェックしてください。

  バージョン 2.0 で変更: この関数は、Pythonの初期のバージョンでは、 Windows環境下で信頼できない動作をしていました。 これはWindowsに付属して提供されるライブラリの `_popen()` 関数を利用したことによるものです。 新しいバージョンの Python では、 Windows 付属のライブラリにある壊れた実装を利用しません。

`os.``tmpfile`()

  更新モード(`w+b`)で開かれた新しいファイルオブジェクトを返します。このファイルはディレクトリエントリ登録に関連付けられておらず、このファイルに対するファイル記述子がなくなると自動的に削除されます。

  利用できる環境: Unix, Windows

幾つかの少し異なった方法で子プロセスを作成するために、幾つかの `popen*()` 関数が提供されています。

バージョン 2.6 で撤廃: 全ての `popen*()` 関数は撤廃されました。 代わりに `subprocess` モジュールを利用してください。

`popen*()` の変種はどれも、 bufsize が指定されている場合には I/O パイプのバッファサイズを表します。 mode を指定する場合には、文字列 `'b'` または `'t'` でなければなりません; これは、Windows でファイルをバイナリモードで開くかテキストモードで開くかを決めるために必要です。 mode の標準の設定値は `'t'` です。

また Unix ではこれらの変種はいずれも cmd をシーケンスにできます。その場合、引数はシェルの介在なしに直接 (`os.spawnv()` のように) 渡されます。 cmd が文字列の場合、引数は( `os.system()` のように) シェルに渡されます。

以下のメソッドは子プロセスから終了ステータスを取得できるようにはしていません。入出力ストリームを制御し、かつ終了コードの取得も行える唯一の方法は、 `subprocess` モジュールを利用する事です。以下のメソッドはUnixでのみ利用可能です。

これらの関数の利用に関係して起きうるデッドロック状態についての議論は、 フロー制御の問題 節を参照してください。

`os.``popen2`(cmd[, mode[, bufsize]])

  cmd を子プロセスとして実行します。ファイル・オブジェクト `(child_stdin, child_stdout)` を返します。

  バージョン 2.6 で撤廃: この関数は撤廃されました。 `subprocess` モジュールを利用してください。 特に、 古い関数を subprocess モジュールで置き換える 節を参照してください。

  利用できる環境: Unix, Windows

  バージョン 2.0 で追加.

`os.``popen3`(cmd[, mode[, bufsize]])

  cmd を子プロセスとして実行します。ファイルオブジェクト `(child_stdin, child_stdout, child_stderr)` を返します。

  バージョン 2.6 で撤廃: この関数は撤廃されました。 `subprocess` モジュールを利用してください。 特に、 古い関数を subprocess モジュールで置き換える 節を参照してください。

  利用できる環境: Unix, Windows

  バージョン 2.0 で追加.

`os.``popen4`(cmd[, mode[, bufsize]])

  cmd を子プロセスとして実行します。ファイルオブジェクト `(child_stdin, child_stdout_and_stderr)` を返します。

  バージョン 2.6 で撤廃: この関数は撤廃されました。 `subprocess` モジュールを利用してください。 特に、 古い関数を subprocess モジュールで置き換える 節を参照してください。

  利用できる環境: Unix, Windows

  バージョン 2.0 で追加.

(`child_stdin, child_stdout, および child_stderr` は子プロセスの視点で名付けられているので注意してください。すなわち、 child_stdin とは子プロセスの標準入力を意味します。)

この機能は `popen2` モジュール内の同じ名前の関数を使っても実現できますが、これらの関数の戻り値は異なる順序を持っています。

## 15.1.3. ファイル記述子の操作

これらの関数は、ファイル記述子を使って参照されている I/Oストリームを操作します。

ファイル記述子とは現在のプロセスから開かれたファイルに対応する小さな整数です。例えば、標準入力のファイル記述子はいつでも 0 で、標準出力は 1、標準エラーは 2 です。その他にさらにプロセスから開かれたファイルには 3、4、5、などが割り振られます。「ファイル記述子」という名前は少し誤解を与えるものかもしれませんが、 Unixプラットフォームにおいて、ソケットやパイプもファイル記述子によって参照されます。

ファイルオブジェクトに紐付けられたファイル記述子は `fileno()` メソッドによって取得可能です。ただし、ファイル記述子を直接使うとファイルオブジェクトのメソッドは経由しませんので、内部でバッファするかどうかといったファイルオブジェクトの都合は無視されます。

`os.``close`(fd)

  ファイルディスクリプタ fd を閉じます。

  利用できる環境: Unix、 Windows

  ノート

  注:この関数は低レベルの I/O のためのもので、 `os.open()` や `pipe()` が返すファイル記述子に対して適用しなければなりません。組み込み関数 `open()` や `popen()`, `fdopen()` の返す “ファイルオブジェクト” を閉じるには、オブジェクトの `close()` メソッドを使ってください。

`os.``closerange`(fd_low, fd_high)

  fd_low (を含む) から fd_high (含まない) までの全てのディスクリプタを、エラーを無視しながら閉じます。次のコードと等価です:

      for fd in xrange(fd_low, fd_high):
          try:
              os.close(fd)
          except OSError:
              pass

  利用できる環境: Unix, Windows

  バージョン 2.6 で追加.

`os.``dup`(fd)

  ファイル記述子 fd の複製を返します。

  利用できる環境: Unix, Windows

`os.``dup2`(fd, fd2)

  ファイル記述子を fd から fd2 に複製し、必要なら後者の記述子を前もって閉じておきます。

  利用できる環境: Unix, Windows

`os.``fchmod`(fd, mode)

  fd で指定されたファイルのモードを mode に変更します。 mode に指定できる値については、 `chmod()` のドキュメントを参照してください。

  利用できる環境: Unix

  バージョン 2.6 で追加.

`os.``fchown`(fd, uid, gid)

  fd で指定されたファイルの owner id と group id を、 uid と gid に変更します。どちらかの id を変更しない場合は、 -1 を渡してください。

  利用できる環境: Unix

  バージョン 2.6 で追加.

`os.``fdatasync`(fd)

  ファイル記述子 fd を持つファイルのディスクへの書き込みを強制します。メタデータの更新は強制しません。

  利用できる環境: Unix

`os.``fpathconf`(fd, name)

  開いているファイルに関連したシステム設定情報 (system configuration information) を返します。 name には取得したい設定名を指定します; これは定義済みのシステム固有値名の文字列で、多くの標準 (POSIX.1、 Unix 95、 Unix 98 その他) で定義されています。プラットフォームによっては別の名前も定義しています。ホストオペレーティングシステムの関知する名前は `pathconf_names` 辞書で与えられています。このマップオブジェクトに入っていない設定変数については、 name に整数を渡してもかまいません。

  もし name が文字列でかつ不明である場合、 `ValueError` を送出します。 name の指定値がホストシステムでサポートされておらず、 `pathconf_names` にも入っていない場合、 `errno.EINVAL` をエラー番号として `OSError` を送出します。

  利用できる環境: Unix

`os.``fstat`(fd)

  `stat()` のようにファイル記述子 fd の状態を返します。

  利用できる環境: Unix, Windows

`os.``fstatvfs`(fd)

  `statvfs()` のように、ファイル記述子 fd に関連づけられたファイルが入っているファイルシステムに関する情報を返します。

  利用できる環境: Unix

`os.``fsync`(fd)

  ファイル記述子 fd を持つファイルのディスクへの書き込みを強制します。 Unix では、ネイティブの `fsync()` 関数を、Windows では MS `_commit()` 関数を呼び出します。

  Python のファイルオブジェクト f を使う場合、 f の内部バッファを確実にディスクに書き込むために、まず `f.flush()` を実行し、それから `os.fsync(f.fileno())` してください。

  利用できる環境: Unix, Windows (2.2.3 以降)

`os.``ftruncate`(fd, length)

  ファイル記述子 fd に対応するファイルを、サイズが最大で length バイトになるように切り詰めます。

  利用できる環境: Unix

`os.``isatty`(fd)

  ファイル記述子 fd が開いていて、tty(のような)装置に接続されている場合、 `1` を返します。そうでない場合は `0` を返します。

  利用できる環境: Unix

`os.``lseek`(fd, pos, how)

  ファイル記述子 fd の現在の位置を pos に設定します。 pos の意味は how で修飾されます: ファイルの先頭からの相対には `SEEK_SET` か `0` を設定します; 現在の位置からの相対には `SEEK_CUR` か `1` を設定します; ファイルの末尾からの相対には `SEEK_END` か `2` を設定します。

  利用できる環境: Unix, Windows

`os.``SEEK_SET`
`os.``SEEK_CUR`
`os.``SEEK_END`

  `lseek()` 関数に渡すパラメータ。値は順に 0, 1, 2 です。

  利用できる環境: Unix, Windows

  バージョン 2.5 で追加.

`os.``open`(file, flags[, mode])

  ファイル file を開き、 flag に従って様々なフラグを設定し、可能なら mode に従ってファイルモードを設定します。 mode の標準の設定値は `0777` (8進表現) で、先に現在の umask を使ってマスクを掛けます。新たに開かれたファイルのファイル記述子を返します。

  フラグとファイルモードの値についての詳細は C ランタイムのドキュメントを参照してください; (`O_RDONLY` や `O_WRONLY` のような) フラグ定数はこのモジュールでも定義されています (以下を参照してください)。特に、Windows ではバイナリファイルを開くときに `O_BINARY` を加える必要があります。

  利用できる環境: Unix, Windows

  ノート

  この関数は低レベルの I/O のためのものです。通常の利用では、 `read()` や `write()` (やその他多くの) メソッドを持つ「ファイルオブジェクト」を返す、組み込み関数 `open()` を使ってください。ファイル記述子を「ファイルオブジェクト」でラップするには `fdopen()` を使ってください。

`os.``openpty`()

  新しい擬似端末のペアを開きます。ファイル記述子のペア `(master, slave)` を返し、それぞれ pty および tty を表します。 (少しだけ) より可搬性のあるアプローチとしては、 `pty` モジュールを使ってください。

  利用できる環境: いくつかの Unix 系システム

`os.``pipe`()

  パイプを作成します。ファイル記述子のペア `(r, w)` を返し、それぞれ読み出し、書き込み用に使うことができます。

  利用できる環境: Unix, Windows

`os.``read`(fd, n)

  ファイル記述子 fd から最大で n バイト読み出します。読み出されたバイト列の入った文字列を返します。 fd が参照しているファイルの終端に達した場合、空の文字列が返されます。

  利用できる環境: Unix, Windows

  ノート

  この関数は低レベルの I/O のためのもので、 `os.open()` や `pipe()` が返すファイル記述子に対して適用しなければなりません。組み込み関数 `open()` や `popen()`, `fdopen()` の返す “ファイルオブジェクト”、あるいは `sys.stdin` から読み出すには、オブジェクトの `read()` か `readline()` メソッドを使ってください。

`os.``tcgetpgrp`(fd)

  fd (`open()` が返す開かれたファイル記述子) で与えられる端末に関連付けられたプロセスグループを返します。

  利用できる環境: Unix

`os.``tcsetpgrp`(fd, pg)

  fd (`open()` が返す開かれたファイル記述子) で与えられる端末に関連付けられたプロセスグループを pg に設定します。

  利用できる環境: Unix

`os.``ttyname`(fd)

  ファイル記述子 fd に関連付けられている端末デバイスを特定する文字列を返します。 fd が端末に関連付けられていない場合、例外が送出されます。

  利用できる環境: Unix

`os.``write`(fd, str)

  ファイル記述子 fd に文字列 str を書き込みます。実際に書き込まれたバイト数を返します。

  利用できる環境: Unix, Windows

  ノート

  この関数は低レベルの I/O のためのもので、 `os.open()` や `pipe()` が返すファイル記述子に対して適用しなければなりません。組み込み関数 `open()` や `popen()`, `fdopen()` の返す “ファイルオブジェクト”、あるいは `sys.stdout`, `sys.stderr` に書き込むには、オブジェクトの `write()` メソッドを使ってください。

### 15.1.3.1. `open()` フラグ定数

以下の定数は `open()` 関数の flags 引数に利用します。これらの定数は、ビット単位OR `|` で組み合わせることができます。幾つかの定数は、全てのプラットフォームで使えるわけではありません。利用可能かどうかや使い方については、 Unix では open(2), Windows では MSDN を参照してください。

`os.``O_RDONLY`
`os.``O_WRONLY`
`os.``O_RDWR`
`os.``O_APPEND`
`os.``O_CREAT`
`os.``O_EXCL`
`os.``O_TRUNC`

  利用できる環境: Unix, Windows

`os.``O_DSYNC`
`os.``O_RSYNC`
`os.``O_SYNC`
`os.``O_NDELAY`
`os.``O_NONBLOCK`
`os.``O_NOCTTY`
`os.``O_SHLOCK`
`os.``O_EXLOCK`

  利用できる環境: Unix

`os.``O_BINARY`
`os.``O_NOINHERIT`
`os.``O_SHORT_LIVED`
`os.``O_TEMPORARY`
`os.``O_RANDOM`
`os.``O_SEQUENTIAL`
`os.``O_TEXT`

  利用できる環境: Windows

`os.``O_ASYNC`
`os.``O_DIRECT`
`os.``O_DIRECTORY`
`os.``O_NOFOLLOW`
`os.``O_NOATIME`

  これらの定数は GNU 拡張で、Cライブラリで定義されていない場合は利用できません。

## 15.1.4. ファイルとディレクトリ

`os.``access`(path, mode)

  実 uid/gid を使って path に対するアクセスが可能か調べます。ほとんどのオペレーティングシステムは実効 uid/gid を使うため、このルーチンは suid/sgid 環境において、プログラムを起動したユーザが path に対するアクセス権をもっているかを調べるために使われます。 path が存在するかどうかを調べるには mode を `F_OK` にします。ファイル操作許可 (permission) を調べるために `R_OK`, `W_OK`, `X_OK` から一つまたはそれ以上のフラグと OR をとることもできます。アクセスが許可されている場合 `True` を、そうでない場合 `False` を返します。詳細は access(2) のマニュアルページを参照してください。

  利用できる環境: Unix, Windows

  ノート

  `access()` を使ってユーザーが例えばファイルを開く権限を持っているか `open()` を使って実際にそうする前に調べることはセキュリティ・ホールを作り出してしまいます。というのは、調べる時点と開く時点の時間差を利用してそのユーザーがファイルを操作してしまうかもしれないからです。 EAFP テクニックを利用する方が好ましいです。例えば:

      if os.access("myfile", os.R_OK):
          with open("myfile") as fp:
              return fp.read()
      return "some default data"

  このコードは次のように書いたほうが良いです:

      try:
          fp = open("myfile")
      except IOError as e:
          if e.errno == errno.EACCESS:
              return "some default data"
          # Not a permission error.
          raise
      else:
          with fp:
              return fp.read()

  ノート

  I/O 操作は `access()` が成功を思わせるときにも失敗することがありえます。特にネットワーク・ファイルシステムにおける操作が通常の POSIX 許可ビット・モデルをはみ出す意味論を備える場合にはそのようなことが起こりえます。

`os.``F_OK`

  `access()` の mode に渡すための値で、 path が存在するかどうかを調べます。

`os.``R_OK`

  `access()` の mode に渡すための値で、 path が読み出し可能かどうかを調べます。

`os.``W_OK`

  `access()` の mode に渡すための値で、 path が書き込み可能かどうかを調べます。

`os.``X_OK`

  `access()` の mode に渡すための値で、 path が実行可能かどうかを調べます。

`os.``chdir`(path)

  現在の作業ディレクトリ (current working directory) を path に設定します。

  利用できる環境: Unix, Windows

`os.``getcwd`()

  現在の作業ディレクトリを表現する文字列を返します。

  利用できる環境: Unix, Windows

`os.``getcwdu`()

  現在の作業ディレクトリを表現するユニコードオブジェクトを返します。

  利用できる環境: Unix、 Windows

  バージョン 2.3 で追加.

`os.``chflags`(path, flags)

  path のフラグを flags に変更する。 flags は、以下の値を(bitwise ORで)組み合わせたものです。 (`stat` モジュールを参照してください):

  - `stat.UF_NODUMP`
  - `stat.UF_IMMUTABLE`
  - `stat.UF_APPEND`
  - `stat.UF_OPAQUE`
  - `stat.UF_NOUNLINK`
  - `stat.SF_ARCHIVED`
  - `stat.SF_IMMUTABLE`
  - `stat.SF_APPEND`
  - `stat.SF_NOUNLINK`
  - `stat.SF_SNAPSHOT`

  利用できる環境: Unix

  バージョン 2.6 で追加.

`os.``chroot`(path)

  現在のプロセスに対してルートディレクトリを path に変更します。

  利用できる環境: Unix

  バージョン 2.2 で追加.

`os.``chmod`(path, mode)

  path のモードを数値 mode に変更します。 mode は、(`stat` モジュールで定義されている) 以下の値のいずれかまたはビット単位の OR で組み合わせた値を取り得ます:

  - `stat.S_ISUID`
  - `stat.S_ISGID`
  - `stat.S_ENFMT`
  - `stat.S_ISVTX`
  - `stat.S_IREAD`
  - `stat.S_IWRITE`
  - `stat.S_IEXEC`
  - `stat.S_IRWXU`
  - `stat.S_IRUSR`
  - `stat.S_IWUSR`
  - `stat.S_IXUSR`
  - `stat.S_IRWXG`
  - `stat.S_IRGRP`
  - `stat.S_IWGRP`
  - `stat.S_IXGRP`
  - `stat.S_IRWXO`
  - `stat.S_IROTH`
  - `stat.S_IWOTH`
  - `stat.S_IXOTH`

  利用できる環境: Unix、 Windows

  ノート

  Windows でも `chmod()` はサポートされていますが、ファイルの読み込み専用フラグを (定数 `S_IWRITE` と `S_IREAD`, または対応する整数値を通して) 設定できるだけです。他のビットは全て無視されます。

`os.``chown`(path, uid, gid)

  path の所有者 (owner) id とグループ id を、数値 uid および gid に変更します。いずれかの id を変更せずにおくには、その値として -1 をセットします。

  利用できる環境: Unix

`os.``lchflags`(path, flags)

  path のフラグを数値 flags に設定します。 `chflags()` に似ていますが、シンボリックリンクをたどりません。

  利用できる環境: Unix

  バージョン 2.6 で追加.

`os.``lchown`(path, uid, gid)

  path の所有者 (owner) id とグループ id を、数値 uid および gid に変更します。この関数はシンボリックリンクをたどりません。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``link`(source, link_name)

  source を指しているハードリンク link_name を作成します。

  利用できる環境: Unix

`os.``listdir`(path)

  path で指定されたディレクトリ内のエントリ名が入ったリストを返します。リスト内の順番は不定です。特殊エントリ `'.'` および `'..'` は、それらがディレクトリに入っていてもリストには含められません。

  利用できる環境: Unix、 Windows

  バージョン 2.3 で変更: Windows NT/2k/XP と Unixでは、 path が Unicode オブジェクトの場合、 Unicode オブジェクトのリストが返されます。 デコード不可能なファイル名は依然として string オブジェクトになります。

`os.``lstat`(path)

  与えられた path に対して、 `lstat()` システムコールと同じ動作をします。 `stat()` に似ていますが、シンボリックリンクをたどりません。シンボリックリンクのない環境では `stat()` の別名です。

`os.``mkfifo`(path[, mode])

  数値で指定されたモード mode を持つ FIFO (名前付きパイプ) を path に作成します。 mode の標準の値は `0666` (8進) です。現在の umask 値が前もって mode からマスクされます。

  利用できる環境: Unix

  FIFO は通常のファイルのようにアクセスできるパイプです。 FIFO は (例えば `os.unlink()` を使って) 削除されるまで存在しつづけます。一般的に、FIFO は “クライアント” と “サーバ” 形式のプロセス間でランデブーを行うために使われます: このとき、サーバは FIFO を読み出し用に開き、クライアントは書き込み用に開きます。 `mkfifo()` は FIFO を開かない — 単にランデブーポイントを作成するだけ — なので注意してください。

`os.``mknod`(filename[, mode=0600, device])

  filename という名前で、ファイルシステム・ノード (ファイル、デバイス特殊ファイル、または、名前つきパイプ) を作ります。 mode は、作ろうとするノードの使用権限とタイプを、 `stat.S_IFREG`, `stat.S_IFCHR`, `stat.S_IFBLK`, `stat.S_IFIFO` (これらの定数は `stat` で使用可能) のいずれかと（ビット OR で）組み合わせて指定します。 `S_IFCHR` と `S_IFBLK` を指定すると、 device は新しく作られたデバイス特殊ファイルを (おそらく `os.makedev()` を使って) 定義し、指定しなかった場合には無視します。

  バージョン 2.3 で追加.

`os.``major`(device)

  生のデバイス番号から、デバイスのメジャー番号を取り出します。 (たいてい `stat` の `st_dev` フィールドか `st_rdev` フィールドです)

  バージョン 2.3 で追加.

`os.``minor`(device)

  生のデバイス番号から、デバイスのマイナー番号を取り出します。 (たいてい `stat` の `st_dev` フィールドか `st_rdev` フィールドです)

  バージョン 2.3 で追加.

`os.``makedev`(major, minor)

  major と minor から、新しく生のデバイス番号を作ります。

  バージョン 2.3 で追加.

`os.``mkdir`(path[, mode])

  数値で指定されたモード mode をもつディレクトリ path を作成します。 mode の標準の値は `0777` (8進)です。システムによっては、 mode は無視されます。利用の際には、現在の umask 値が前もってマスクされます。指定されたディレクトリがすでに存在する場合は `OSError` 例外を発生させます。

  一時ディレクトリを作成することもできます: `tempfile` モジュールの `tempfile.mkdtemp()` 関数を参照してください。

  利用できる環境: Unix, Windows

`os.``makedirs`(path[, mode])

  再帰的なディレクトリ作成関数です。 `mkdir()` に似ていますが、末端 (leaf) となるディレクトリを作成するために必要な中間の全てのディレクトリを作成します。末端ディレクトリがすでに存在する場合や、作成ができなかった場合には `error` 例外を送出します。 mode の標準の値は `0777` (8進)です。システムによっては、 mode は無視されます。利用の際には、現在の umask 値が前もってマスクされます。

  ノート

  `makedirs()` は作り出すパス要素が `os.pardir` を含むと混乱することになります。

  バージョン 1.5.2 で追加.

  バージョン 2.3 で変更: この関数は UNC パスを正しく扱えるようになりました.

`os.``pathconf`(path, name)

  指定されたファイルに関係するシステム設定情報を返します。 name には取得したい設定名を指定します; これは定義済みのシステム固有値名の文字列で、多くの標準 (POSIX.1、 Unix 95、 Unix 98 その他) で定義されています。プラットフォームによっては別の名前も定義しています。ホストオペレーティングシステムの関知する名前は `pathconf_names` 辞書で与えられています。このマップ型オブジェクトに入っていない設定変数については、 name に整数を渡してもかまいません。

  もし name が文字列でかつ不明である場合、 `ValueError` を送出します。 name の指定値がホストシステムでサポートされておらず、 `pathconf_names` にも入っていない場合、 `errno.EINVAL` をエラー番号として `OSError` を送出します。

  利用できる環境: Unix

`os.``pathconf_names`

  `pathconf()` および `fpathconf()` が受理するシステム設定名を、ホストオペレーティングシステムで定義されている整数値に対応付けている辞書です。この辞書はシステムでどの設定名が定義されているかを決定するために利用できます。

  利用できる環境: Unix

`os.``readlink`(path)

  シンボリックリンクが指しているパスを表す文字列を返します。返される値は絶対パスにも、相対パスにもなり得ます; 相対パスの場合、 `os.path.join(os.path.dirname(path), result)` を使って絶対パスに変換することができます。

  バージョン 2.6 で変更.

  利用できる環境: Unix

`os.``remove`(path)

  ファイル path を削除(消去)します。 path がディレクトリの場合、 `OSError` が送出されます; ディレクトリの削除については `rmdir()` を参照してください。この関数は下で述べられている `unlink()` 関数と同一です。 Windows では、使用中のファイルを削除しようと試みると例外を送出します; Unixでは、ディレクトリエントリは削除されますが、記憶装置上にアロケーションされたファイル領域は元のファイルが使われなくなるまで残されます。

  利用できる環境: Unix, Windows

`os.``removedirs`(path)

  再帰的なディレクトリ削除関数です。 `rmdir()` と同じように動作しますが、末端ディレクトリがうまく削除できるかぎり、 `removedirs()` は path に現れる親ディレクトリをエラーが送出されるまで (このエラーは通常、指定したディレクトリの親ディレクトリが空でないことを意味するだけなので無視されます) 順に削除することを試みます。例えば、 `os.removedirs('foo/bar/baz')` では最初にディレクトリ `'foo/bar/baz'` を削除し、次に `'foo/bar'` さらに `'foo'` をそれらが空ならば削除します。末端のディレクトリが削除できなかった場合には `OSError` が送出されます。

  バージョン 1.5.2 で追加.

`os.``rename`(src, dst)

  ファイルまたはディレクトリ src を dst に名前変更します。 dst がディレクトリの場合、 `OSError` が送出されます。 Unixでは、 dst が存在し、かつファイルの場合、ユーザの権限があるかぎり暗黙のうちに元のファイルが置き換えられます。この操作はいくつかの Unix 系システムにおいて、 src と dst が異なるファイルシステム上にあると失敗することがあります。ファイル名の変更が成功する場合、この操作は原子的 (atomic) 操作となります (これは POSIX 要求仕様です)。 Windows では、 dst が既に存在する場合には、たとえファイルの場合でも `OSError` が送出されます; これは dst が既に存在するファイル名の場合、名前変更の原子的操作を実装する手段がないからです。

  利用できる環境: Unix, Windows

`os.``renames`(old, new)

  再帰的にディレクトリやファイル名を変更する関数です。 `rename()` のように動作しますが、新たなパス名を持つファイルを配置するために必要な途中のディレクトリ構造をまず作成しようと試みます。名前変更の後、元のファイル名のパス要素は `removedirs()` を使って右側から順に枝刈りされてゆきます。

  バージョン 1.5.2 で追加.

  ノート

  この関数はコピー元の末端のディレクトリまたはファイルを削除する権限がない場合には失敗します。

`os.``rmdir`(path)

  ディレクトリ path を削除します。ディレクトリが空の場合にだけ正常に動作します。そうでなければ `OSError` が送出されます。ディレクトリ・ツリー全体を削除するのには `shutil.rmtree()` が使えます。

  利用できる環境: Unix, Windows

`os.``stat`(path)

  与えられた path に対して `stat()` システムコール相当の処理を実行します。 (この関数はシンボリックリンクをたどります。シンボリックリンクに対して stat したい場合は `lstat()` を利用してください)

  戻り値はオブジェクトで、その属性は `stat` 構造体に従います:

  - `st_mode` - 保護 bits,
  - `st_ino` - inode 番号,
  - `st_dev` - デバイス,
  - `st_nlink` - ハードリンク数,
  - `st_uid` - オーナーの uid,
  - `st_gid` - オーナーの group id,
  - `st_size` - ファイルのサイズ(単位: byte),
  - `st_atime` - 最近にアクセスされた時間,
  - `st_mtime` - 最近に内容を変更した時間,
  - `st_ctime` - プラットフォーム依存; Unix では最近のメタデータ変更時間、 Windows ではファイルが生成された時間

  バージョン 2.3 で変更: もし `stat_float_times()` が `True` を返す場合、時間値は浮動小数点で秒を計ります。 ファイルシステムがサポートしていれば、秒の小数点以下の桁も含めて返されます。 Mac OS では、時間は常に浮動小数点です。 詳細な説明は `stat_float_times()` を参照してください。

  (Linux のような) いくつかの Unix システムでは、以下の属性が利用できるかもしれません:

  - `st_blocks` - ファイル用にアロケーションされているブロック数,
  - `st_blksize` - ファイルシステムのブロックサイズ,
  - `st_rdev` - i ノードデバイスの場合、デバイスの形式,
  - `st_flags` - ファイルに対するユーザー定義のフラグ

  他の (FreeBSD のような) Unix システムでは、以下の属性が利用できる場合があります (ただし root がそれらを使うことにした場合以外は値が入っていないでしょう):

  - `st_gen` - ファイル生成番号,
  - `st_birthtime` - ファイル生成時刻

  Mac OS システムでは、以下の属性も利用可能なときがあります:

  - `st_rsize`,
  - `st_creator`,
  - `st_type`,

  RISCOS システムでは、以下の属性も利用できます:

  - `st_ftype` (file type),
  - `st_attrs` (attributes),
  - `st_obtype` (object type)

  ノート

  `st_atime`, `st_mtime`, および `st_ctime` メンバの厳密な意味や精度はオペレーティングシステムやファイルシステムによって変わります。例えば、FAT や FAT32 ファイルシステムを使っている Windows システムでは、 `st_atime` の精度は 1 日に過ぎません。詳しくはお使いのオペレーティングシステムのドキュメントを参照してください。

`os.``stat_float_times`([newvalue])

  `stat_result` がタイムスタンプに浮動小数点オブジェクトを使うかどうかを決定します。 newvalue が `True` の場合、以後の `stat()` 呼び出しは浮動小数点を返し、 `False` の場合には以後整数を返します。 newvalue が省略された場合、現在の設定どおりの戻り値になります。

  古いバージョンの Python と互換性を保つため、 `stat_result` にタプルとしてアクセスすると、常に整数が返されます。

  バージョン 2.5 で変更: Python はデフォルトで浮動小数点数を返すようになりました。浮動小数点数のタイムスタンプではうまく動かないアプリケーションはこの機能を利用して 昔ながらの振る舞いを取り戻すことができます。

  タイムスタンプの精度 (すなわち最小の小数部分) はシステム依存です。システムによっては秒単位の精度しかサポートしません。そういったシステムでは小数部分は常に 0 です。

  この設定の変更は、プログラムの起動時に、 __main__ モジュールの中でのみ行うことを推奨します。ライブラリは決して、この設定を変更するべきではありません。浮動小数点型のタイムスタンプを処理すると、不正確な動作をするようなライブラリを使う場合、ライブラリが修正されるまで、浮動小数点型を返す機能を停止させておくべきです。

`os.``statvfs`(path)

  与えられた path に対して `statvfs()` システムコールを実行します。戻り値はオブジェクトで、その属性は与えられたパスが収められているファイルシステムについて記述したものです。各属性は `statvfs` 構造体のメンバ: `f_bsize`, `f_frsize`, `f_blocks`, `f_bfree`, `f_bavail`, `f_files`, `f_ffree`, `f_favail`, `f_flag`, `f_namemax`,に対応します。

  後方互換性のために、戻り値は上の順にそれぞれ対応する属性値が並んだタプルとしてアクセスすることもできます。標準モジュール `statvfs` では、シーケンスとしてアクセスする場合に、 `statvfs` 構造体から情報を引き出す上便利な関数や定数を定義しています; これは属性として各フィールドにアクセスできないバージョンの Python で動作する必要のあるコードを書く際に便利です。

  利用できる環境: Unix

  バージョン 2.2 で変更: 返されたオブジェクトの属性としてのアクセス機能を追加しました.

`os.``symlink`(source, link_name)

  source を指しているシンボリックリンクを link_name に作成します。

  利用できる環境: Unix

`os.``tempnam`([dir[, prefix]])

  一時ファイル (temporary file) を生成する上でファイル名として相応しい一意なパス名を返します。この値は一時的なディレクトリエントリを表す絶対パスで、 dir ディレクトリの下か、 dir が省略されたり `None` の場合には一時ファイルを置くための共通のディレクトリの下になります。 prefix が与えられており、かつ `None` でない場合、ファイル名の先頭につけられる短い接頭辞になります。アプリケーションは `tempnam()` が返したパス名を使って正しくファイルを生成し、生成したファイルを管理する責任があります; 一時ファイルの自動消去機能は提供されていません。

  警告

  `tempnam()` を使うと、symlink 攻撃に対して脆弱になります; 代りに `tmpfile()` (ファイルオブジェクトの生成) を使うよう検討してください。

  利用できる環境: Unix、 Windows

`os.``tmpnam`()

  一時ファイル (temporary file) を生成する上でファイル名として相応しい一意なパス名を返します。この値は一時ファイルを置くための共通のディレクトリ下の一時的なディレクトリエントリを表す絶対パスです。アプリケーションは `tmpnam()` が返したパス名を使って正しくファイルを生成し、生成したファイルを管理する責任があります; 一時ファイルの自動消去機能は提供されていません。

  警告

  `tmpnam()` を使うと、symlink 攻撃に対して脆弱になります; 代りに `tmpfile()` (ファイルオブジェクトの生成) を使うよう検討してください。

  利用できる環境: Unix, Windowsこの関数はおそらく Windows では使うべきではないでしょう; Micorosoft の `tmpnam()` 実装では、常に現在のドライブのルートディレクトリ下のファイル名を生成しますが、これは一般的にはテンポラリファイルを置く場所としてはひどい場所です (アクセス権限によっては、この名前をつかってファイルを開くことすらできないかもしれません)。

`os.``TMP_MAX`

  `tmpnam()` がテンポラリ名を再利用し始めるまでに生成できる一意な名前の最大数です。

`os.``unlink`(path)

  ファイル path を削除します。 `remove()` と同じです; `unlink()` の名前は伝統的な Unix の関数名です。

  利用できる環境: Unix, Windows

`os.``utime`(path, times)

  path で指定されたファイルに最終アクセス時刻および最終修正時刻を設定します。 times が `None` の場合、ファイルの最終アクセス時刻および最終更新時刻は現在の時刻になります。 (この動作は、その path に対してUnixの touch プログラムを実行するのに似ています)

  そうでない場合、 times は2要素のタプルで、 `(atime, mtime)` の形式をとらなくてはなりません。これらはそれぞれアクセス時刻および修正時刻を設定するために使われます。

  path にディレクトリを指定できるかどうかは、オペレーティングシステムがディレクトリをファイルの一種として実装しているかどうかに依存します (例えば、 Windows はそうではありません)。ここで設定した時刻の値は、オペレーティングシステムがアクセス時刻や更新時刻を記録する際の精度によっては、後で `stat()` 呼び出したときの値と同じにならないかも知れないので注意してください。 `stat()` も参照してください。

  バージョン 2.0 で変更: times として `None` をサポートするようにしました.

  利用できる環境: Unix, Windows

`os.``walk`(top[, topdown=True[, onerror=None[, followlinks=False]]])

  ディレクトリツリー以下のファイル名を、ツリーをトップダウンもしくはボトムアップに走査することで生成します。ディレクトリ top を根に持つディレクトリツリーに含まれる、各ディレクトリ(top 自身を含む) から、タプル `(dirpath, dirnames, filenames)` を生成します。

  dirpath は文字列で、ディレクトリへのパスです。 dirnames は dirpath 内のサブディレクトリ名のリスト (`'.'` と `'..'` は除く）です。 filenames は dirpath 内の非ディレクトリ・ファイル名のリストです。このリスト内の名前には、ファイル名までのパスが含まれないことに、注意してください。 dirpath 内のファイルやディレクトリへの (top からたどった) フルパスを得るには、 `os.path.join(dirpath, name)` してください。

  オプション引数 topdown が `True` であるか、指定されなかった場合、各ディレクトリからタプルを生成した後で、サブディレクトリからタプルを生成します。 (ディレクトリはトップダウンで生成)。 topdown が `False` の場合、ディレクトリに対応するタプルは、そのディレクトリ以下の全てのサブディレクトリに対応するタプルの後で (ボトムアップで) 生成されます

  topdown が `True` のとき、呼び出し側は dirnames リストを、インプレースで (たとえば、 `del` やスライスを使った代入で) 変更でき、 `walk()` は dirnames に残っているサブディレクトリ内のみを再帰します。これにより、検索を省略したり、特定の訪問順序を強制したり、呼び出し側が `walk()` を再開する前に、呼び出し側が作った、または名前を変更したディレクトリを、 `walk()` に知らせたりすることができます。 topdown が `False` のときに dirnames を変更しても効果はありません。ボトムアップモードでは dirpath 自身が生成される前に dirnames 内のディレクトリの情報が生成されるからです。

  デフォルトでは、 `os.listdir()` 呼び出しから送出されたエラーは無視されます。オプションの引数 onerror を指定するなら、この値は関数でなければなりません; この関数は単一の引数として、 `OSError` インスタンスを伴って呼び出されます。この関数ではエラーを報告して歩行を続けたり、例外を送出して歩行を中断したりできます。ファイル名は例外オブジェクトの `filename` 属性として取得できることに注意してください。

  デフォルトでは、 `walk()` はディレクトリへのシンボリックリンクをたどりません。 followlinks に `True` を設定すると、ディレクトリへのシンボリックリンクをサポートしているシステムでは、シンボリックリンクの指しているディレクトリを走査します。

  バージョン 2.6 で追加: followlinks 引数

  ノート

  followlinks を `True` に設定すると、シンボリックリンクが親ディレクトリを指していた場合に、無限ループになることに気をつけてください。 `walk()` は、すでにたどったディレクトリを管理したりはしません。

  ノート

  相対パスを渡した場合、 `walk()` の回復の間でカレント作業ディレクトリを変更しないでください。 `walk()` はカレントディレクトリを変更しませんし、呼び出し側もカレントディレクトリを変更しないと仮定しています。

  以下の例では、最初のディレクトリ以下にある各ディレクトリに含まれる、非ディレクトリファイルのバイト数を表示します。ただし、CVS サブディレクトリより下を見に行きません。

      import os
      from os.path import join, getsize
      for root, dirs, files in os.walk('python/Lib/email'):
          print root, "consumes",
          print sum(getsize(join(root, name)) for name in files),
          print "bytes in", len(files), "non-directory files"
          if 'CVS' in dirs:
              dirs.remove('CVS')  # don't visit CVS directories

  次の例では、ツリーをボトムアップで歩行することが不可欠になります; `rmdir()` はディレクトリが空になる前に削除させないからです:

      # Delete everything reachable from the directory named in "top",
      # assuming there are no symbolic links.
      # CAUTION:  This is dangerous!  For example, if top == '/', it
      # could delete all your disk files.
      import os
      for root, dirs, files in os.walk(top, topdown=False):
          for name in files:
              os.remove(os.path.join(root, name))
          for name in dirs:
              os.rmdir(os.path.join(root, name))

  バージョン 2.3 で追加.

## 15.1.5. プロセス管理

プロセスを生成したり管理するために、以下の関数を利用することができます。

様々な `exec*()` 関数が、プロセス内にロードされた新たなプログラムに与えるための引数からなるリストをとります。どの場合でも、新たなプログラムに渡されるリストの最初の引数は、ユーザがコマンドラインで入力する引数ではなく、プログラム自身の名前になります。 C プログラマにとっては、これはプログラムの `main()` に渡される `argv[0]` になります。例えば、 `os.execv('/bin/echo', ['foo', 'bar'])` は、標準出力に `bar` を出力します; `foo` は無視されたかのように見えることでしょう。

`os.``abort`()

  `SIGABRT` シグナルを現在のプロセスに対して生成します。 Unixでは、標準設定の動作はコアダンプの生成です; Windows では、プロセスは即座に終了コード `3` を返します。 `signal.signal()` を使って `SIGABRT` に対するシグナルハンドラを設定しているプログラムは異なる挙動を示すので注意してください。利用できる環境: Unix、 Windows

`os.``execl`(path, arg0, arg1, ...)
`os.``execle`(path, arg0, arg1, ..., env)
`os.``execlp`(file, arg0, arg1, ...)
`os.``execlpe`(file, arg0, arg1, ..., env)
`os.``execv`(path, args)
`os.``execve`(path, args, env)
`os.``execvp`(file, args)
`os.``execvpe`(file, args, env)

  これらの関数はすべて、現在のプロセスを置き換える形で新たなプログラムを実行します; 現在のプロセスは戻り値を返しません。 Unixでは、新たに実行される実行コードは現在のプロセス内にロードされ、呼び出し側と同じプロセス ID を持つことになります。エラーは `OSError` 例外として報告されます。

  現在のプロセスは瞬時に置き換えられます。開かれているファイルオブジェクトやディスクリプタはフラッシュされません。そのため、バッファ内にデータが残っているかもしれない場合、 `exec*()` 関数を実行する前に `sys.stdout.flush()` か `os.fsync()` を利用してバッファをフラッシュしておく必要があります。

  “l” および “v” のついた `exec*()` 関数は、コマンドライン引数をどのように渡すかが異なります。 “l” 型は、コードを書くときにパラメタ数が決まっている場合に、おそらくもっとも簡単に利用できます。個々のパラメタは単に `execl*()` 関数の追加パラメタとなります。 “v” 型は、パラメタの数が可変の時に便利で、リストかタプルの引数が args パラメタとして渡されます。どちらの場合も、子プロセスに渡す引数は動作させようとしているコマンドの名前から始めるべきですが、これは強制ではありません。

  末尾近くに “p” をもつ型 (`execlp()`, `execlpe()`, `execvp()`,および `execvpe()`) は、プログラム file を探すために環境変数 `PATH` を利用します。環境変数が (次の段で述べる `exec*e()` 型関数で) 置き換えられる場合、環境変数は `PATH` を決定する上の情報源として使われます。その他の型、 `execl()`, `execle()`, `execv()`,および `execve()` では、実行コードを探すために `PATH` を使いません。 path には適切に設定された絶対パスまたは相対パスが入っていなくてはなりません。

  `execle()`, `execlpe()`, `execve()`,および `execvpe()` (全て末尾に “e” がついていることに注意してください) では、 env パラメタは新たなプロセスで利用される環境変数を定義するためのマップ型でなくてはなりません(現在のプロセスの環境変数の代わりに利用されます); `execl()`, `execlp()`, `execv()`,および `execvp()` では、全て新たなプロセスは現在のプロセスの環境を引き継ぎます。

  利用できる環境: Unix, Windows

`os.``_exit`(n)

  終了ステータス n でプロセスを終了します。このときクリーンアップハンドラの呼び出しや、標準入出力バッファのフラッシュなどは行いません。

  利用できる環境: Unix, Windows

  ノート

  システムを終了する標準的な方法は `sys.exit(n)` です。 `_exit()` は通常、 `fork()` された後の子プロセスでのみ使われます。

以下の終了コードは必須ではありませんが `_exit()` と共に使うことができます。一般に、メールサーバの外部コマンド配送プログラムのような、 Python で書かれたシステムプログラムに使います。

ノート

いくらかの違いがあって、これらの全てが全ての Unix プラットフォームで使えるわけではありません。以下の定数は基礎にあるプラットフォームで定義されていれば定義されます。

`os.``EX_OK`

  エラーが起きなかったことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_USAGE`

  誤った個数の引数が渡されたときなど、コマンドが間違って使われたことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_DATAERR`

  入力データが間違っていたことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_NOINPUT`

  入力ファイルが存在しなかった、または、読み込み不可だったことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_NOUSER`

  指定されたユーザが存在しなかったことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_NOHOST`

  指定されたホストが存在しなかったことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_UNAVAILABLE`

  要求されたサービスが利用できないことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_SOFTWARE`

  内部ソフトウェアエラーが検出されたことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_OSERR`

  fork できない、pipe の作成ができないなど、オペレーティング・システム・エラーが検出されたことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_OSFILE`

  システムファイルが存在しなかった、開けなかった、あるいはその他のエラーが起きたことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_CANTCREAT`

  ユーザには作成できない出力ファイルを指定したことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_IOERR`

  ファイルの I/O を行っている途中にエラーが発生したときの終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_TEMPFAIL`

  一時的な失敗が発生したことを表す終了コード。これは、再試行可能な操作の途中に、ネットワークに接続できないというような、実際にはエラーではないかも知れないことを意味します。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_PROTOCOL`

  プロトコル交換が不正、不適切、または理解不能なことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_NOPERM`

  操作を行うために十分な許可がなかった（ファイルシステムの問題を除く）ことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_CONFIG`

  設定エラーが起こったことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``EX_NOTFOUND`

  “an entry was not found” のようなことを表す終了コード。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``fork`()

  子プロセスを fork します。子プロセスでは `0` が返り、親プロセスでは子プロセスの id が返ります。エラーが発生した場合は、 `OSError` 例外を送出します。

  FreeBSD <= 6.3, Cygwin, OS/2 EMX を含む幾つかのプラットフォームにおいて、 fork() をスレッド内から利用した場合に既知の問題があることに注意してください。

  利用できる環境: Unix

`os.``forkpty`()

  子プロセスを fork します。このとき新しい擬似端末 (psheudo-terminal) を子プロセスの制御端末として使います。親プロセスでは `(pid, fd)` からなるペアが返り、 fd は擬似端末のマスタ側 (master end) のファイル記述子となります。可搬性のあるアプローチを取るためには、 `pty` モジュールを利用してください。エラーが発生した場合は、 `OSError` 例外を送出します。

  利用できる環境: いくつかの Unix系。

`os.``kill`(pid, sig)

  プロセス pid にシグナル sig を送ります。ホストプラットフォームで利用可能なシグナルを特定する定数は `signal` モジュールで定義されています。

  Windows: `signal.CTRL_C_EVENT` と `signal.CTRL_BREAK_EVENT` は、同じコンソールウィンドウを共有しているコンソールプロセス(例: 子プロセス) にだけ送ることができる特別なシグナルです。その他の値を sig に与えると、そのプロセスが無条件に TerminateProcess API によって kill され、終了コードが sig に設定されます。 Windows の `kill()` は kill するプロセスのハンドルも受け取ります。

  バージョン 2.7 で追加: Windows サポート

`os.``killpg`(pgid, sig)

  プロセスグループ pgid にシグナル sig を送ります。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``nice`(increment)

  プロセスの “nice 値” に increment を加えます。新たな nice 値を返します。

  利用できる環境: Unix

`os.``plock`(op)

  プログラムのセグメント (program segment) をメモリ内でロックします。 op (`<sys/lock.h>` で定義されています) にはどのセグメントをロックするかを指定します。

  利用できる環境: Unix

`os.``popen`(...)
`os.``popen2`(...)
`os.``popen3`(...)
`os.``popen4`(...)

  子プロセスを起動し、子プロセスとの通信のために開かれたパイプを返します。これらの関数は ファイルオブジェクトの生成 節で記述されています。

`os.``spawnl`(mode, path, ...)
`os.``spawnle`(mode, path, ..., env)
`os.``spawnlp`(mode, file, ...)
`os.``spawnlpe`(mode, file, ..., env)
`os.``spawnv`(mode, path, args)
`os.``spawnve`(mode, path, args, env)
`os.``spawnvp`(mode, file, args)
`os.``spawnvpe`(mode, file, args, env)

  新たなプロセス内でプログラム path を実行します。

  (`subprocess` モジュールが、新しいプロセスを実行して結果を取得するための、より強力な機能を提供しています。この関数の代わりに、 `subprocess` モジュールを利用することが推奨されています。 `subprocess` モジュールのドキュメントの、 古い関数を subprocess モジュールで置き換える というセクションを読んでください。)

  mode が `P_NOWAIT` の場合、この関数は新たなプロセスのプロセス ID となります。; mode が `P_WAIT` の場合、子プロセスが正常に終了するとその終了コードが返ります。そうでない場合にはプロセスを kill したシグナル signal に対して `-signal` が返ります。 Windows では、プロセス ID は実際にはプロセスハンドル値になります。

  “l” および “v” のついた `spawn*()` 関数は、コマンドライン引数をどのように渡すかが異なります。 “l” 型は、コードを書くときにパラメタ数が決まっている場合に、おそらくもっとも簡単に利用できます。個々のパラメタは単に `spawnl*()` 関数の追加パラメタとなります。 “v” 型は、パラメタの数が可変の時に便利で、リストかタプルの引数が args パラメタとして渡されます。どちらの場合も、子プロセスに渡す引数は動作させようとしているコマンドの名前から始まらなくてはなりません。

  末尾近くに “p” をもつ型 (`spawnlp()`, `spawnlpe()`, `spawnvp()`, `spawnvpe()`) は、プログラム file を探すために環境変数 `PATH` を利用します。環境変数が (次の段で述べる `spawn*e()` 型関数で) 置き換えられる場合、環境変数は `PATH` を決定する上の情報源として使われます。その他の型、 `spawnl()`, `spawnle()`, `spawnv()`,および `spawnve()` では、実行コードを探すために `PATH` を使いません。 path には適切に設定された絶対パスまたは相対パスが入っていなくてはなりません。

  `spawnle()`, `spawnlpe()`, `spawnve()`,および `spawnvpe()` (全て末尾に “e” がついていることに注意してください) では、 env パラメタは新たなプロセスで利用される環境変数を定義するためのマップ型でなくてはなりません; `spawnl()`, `spawnlp()`, `spawnv()`, および `spawnvp()` では、全て新たなプロセスは現在のプロセスの環境を引き継ぎます。 env 辞書のキーと値は全て文字列である必要があります。不正なキーや値を与えると関数が失敗し、 `127` を返します。

  例えば、以下の `spawnlp()` および `spawnvpe()` 呼び出し:

      import os
      os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')

      L = ['cp', 'index.html', '/dev/null']
      os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)

  は等価です。

  利用できる環境: Unix, Windows

  `spawnlp()`, `spawnlpe()`, `spawnvp()` および `spawnvpe()` は Windows では利用できません。

  バージョン 1.6 で追加.

`os.``P_NOWAIT`
`os.``P_NOWAITO`

  `spawn*()` 関数ファミリに対する mode パラメタとして取れる値です。この値のいずれかを mode として与えた場合、 `spawn*()` 関数は新たなプロセスが生成されるとすぐに、プロセスの ID を戻り値として返ります。

  利用できる環境: Unix, Windows

  バージョン 1.6 で追加.

`os.``P_WAIT`

  `spawn*()` 関数ファミリに対する mode パラメタとして取れる値です。この値を mode として与えた場合、 `spawn*()` 関数は新たなプロセスを起動して完了するまで返らず、プロセスがうまく終了した場合には終了コードを、シグナルによってプロセスが kill された場合には `-signal` を返します。

  利用できる環境: Unix, Windows

  バージョン 1.6 で追加.

`os.``P_DETACH`
`os.``P_OVERLAY`

  `spawn*()` 関数ファミリに対する mode パラメタとして取れる値です。これらの値は上の値よりもやや可搬性において劣っています。 `P_DETACH` は `P_NOWAIT` に似ていますが、新たなプロセスは呼び出しプロセスのコンソールから切り離され (detach) ます。 `P_OVERLAY` が使われた場合、現在のプロセスは置き換えられます; 従って `spawn*()` は返りません。

  利用できる環境: Windows

  バージョン 1.6 で追加.

`os.``startfile`(path[, operation])

  ファイルを関連付けられたアプリケーションを使って「スタート」します。

  operation が指定されないかまたは `'open'` であるとき、この動作は、 Windows の Explorer 上でのファイルをダブルクリックや、コマンドプロンプト (interactive command shell) 上でのファイル名を start 命令の引数としての実行と同様です: ファイルは拡張子が関連付けされているアプリケーション (が存在する場合) を使って開かれます。

  他の operation が与えられる場合、それはファイルに対して何がなされるべきかを表す “command verb” (コマンドを表す動詞) でなければなりません。 Microsoft が文書化している動詞は、 `'print'` と `'edit'` (ファイルに対して) および `'explore'` と `'find'` (ディレクトリに対して) です。

  `startfile()` は関連付けされたアプリケーションが起動すると同時に返ります。アプリケーションが閉じるまで待機させるためのオプションはなく、アプリケーションの終了状態を取得する方法もありません。 path 引数は現在のディレクトリからの相対で表します。絶対パスを利用したいなら、最初の文字はスラッシュ (`'/'`) ではないので注意してください; もし最初の文字がスラッシュなら、システムの背後にある Win32 `ShellExecute()` 関数は動作しません。 `os.path.normpath()` 関数を使って、Win32 用に正しくコード化されたパスになるようにしてください。

  利用できる環境: Windows

  バージョン 2.0 で追加.

  バージョン 2.5 で追加: operation パラメータ.

`os.``system`(command)

  サブシェル内でコマンド (文字列) を実行します。この関数は標準 C 関数 `system()` を使って実装されており、 `system()` と同じ制限があります。 `sys.stdin` などに対する変更を行っても、実行されるコマンドの環境には反映されません。

  Unixでは、戻り値はプロセスの終了ステータスで、 `wait()` で定義されている書式にコード化されています。 POSIX は `system()` 関数の戻り値の意味について定義していないので、 Python の `system()` における戻り値はシステム依存となることに注意してください。

  Windows では、戻り値は command を実行した後にシステムシェルから返される値で、Windows の環境変数 `COMSPEC` となります: command.com ベースのシステム (Windows 95, 98 および ME) では、この値は常に `0` です; cmd.exe ベースのシステム (Windows NT, 2000 および XP) では、この値は実行したコマンドの終了ステータスです; ネイティブでないシェルを使っているシステムについては、使っているシェルのドキュメントを参照してください。

  `subprocess` モジュールが、新しいプロセスを実行して結果を取得するための、より強力な機能を提供しています。この関数の代わりに、 `subprocess` モジュールを利用することが推奨されています。 `subprocess` モジュールのドキュメントの、 古い関数を subprocess モジュールで置き換える というセクションのレシピを参考にして下さい。

  利用できる環境: Unix, Windows

`os.``times`()

  (プロセッサまたはその他の) 積算時間を秒で表す浮動小数点数からなる、 5 要素のタプルを返します。タプルの要素は、ユーザ時間 (user time)、システム時間 (system time)、子プロセスのユーザ時間、子プロセスのシステム時間、そして過去のある固定時点からの経過時間で、この順に並んでいます。 Unix マニュアルページ times(2) または対応する Windows プラットフォーム API ドキュメントを参照してください。 Windows では、最初の２つの要素だけが埋められ、残りは0になります。

  利用できる環境: Unix, Windows

`os.``wait`()

  子プロセスの実行完了を待機し、子プロセスの pid と終了コードインジケータ — 16 ビットの数で、下位バイトがプロセスを kill したシグナル番号、上位バイトが終了ステータス (シグナル番号がゼロの場合) — の入ったタプルを返します; コアダンプファイルが生成された場合、下位バイトの最上桁ビットが立てられます。

  利用できる環境: Unix

`os.``waitpid`(pid, options)

  Unix の場合: プロセス id pid で与えられた子プロセスの完了を待機し、子プロセスのプロセス id と(`wait()` と同様にコード化された) 終了ステータスインジケータからなるタプルを返します。この関数の動作は options によって影響されます。通常の操作では `0` にします。

  pid が `0` よりも大きい場合、 `waitpid()` は特定のプロセスのステータス情報を要求します。 pid が `0` の場合、現在のプロセスグループ内の任意の子プロセスの状態に対する要求です。 pid が `-1` の場合、現在のプロセスの任意の子プロセスに対する要求です。 pid が `-1` よりも小さい場合、プロセスグループ `-pid` (すなわち pid の絶対値) 内の任意のプロセスに対する要求です。

  システムコールが -1 を返したとき、 `OSError` を errno と共に送出します。

  Windowsでは、プロセスハンドル pid を指定してプロセスの終了を待って、 pid と、終了ステータスを8bit左シフトした値のタプルを返します。 (シフトは、この関数をクロスプラットフォームで利用しやすくするために行われます) `0` 以下の pid はWindowsでは特別な意味を持っておらず、例外を発生させます。 options の値は効果がありません。 pid は、子プロセスで無くても、プロセスIDを知っているどんなプロセスでも参照することが可能です。 `spawn()` 関数を `P_NOWAIT` と共に呼び出した場合、適切なプロセスハンドルが返されます。

`os.``wait3`([options])

  `waitpid()` に似ていますが、プロセス id を引数に取らず、子プロセス id、終了ステータスインジケータ、リソース使用情報の3要素からなるタプルを返します。リソース使用情報の詳しい情報は `resource`.`getrusage()` を参照してください。 options は `waitpid()` および `wait4()` と同様です。

  利用できる環境: Unix

  バージョン 2.5 で追加.

`os.``wait4`(pid, options)

  `waitpid()` に似ていますが、子プロセス id、終了ステータスインジケータ、リソース使用情報の3要素からなるタプルを返します。リソース使用情報の詳しい情報は `resource`.`getrusage()` を参照してください。 `wait4()` の引数は `waitpid()` に与えられるものと同じです。

  利用できる環境: Unix

  バージョン 2.5 で追加.

`os.``WNOHANG`

  子プロセス状態がすぐに取得できなかった場合に直ちに終了するようにするための `waitpid()` のオプションです。この場合、関数は `(0, 0)` を返します。

  利用できる環境: Unix

`os.``WCONTINUED`

  このオプションによって子プロセスは前回状態が報告された後にジョブ制御による停止状態から実行を継続された場合に報告されるようになります。

  利用できる環境: ある種の Unix システム。

  バージョン 2.3 で追加.

`os.``WUNTRACED`

  このオプションによって子プロセスは停止されていながら停止されてから状態が報告されていない場合に報告されるようになります。

  利用できる環境: Unix

  バージョン 2.3 で追加.

以下の関数は `system()`, `wait()`, あるいは `waitpid()` が返すプロセス状態コードを引数にとります。これらの関数はプロセスの配置を決めるために利用することができます。

`os.``WCOREDUMP`(status)

  プロセスに対してコアダンプが生成されていた場合には `True` を、それ以外の場合は `False` を返します。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``WIFCONTINUED`(status)

  プロセスがジョブ制御による停止状態から実行を継続された (continue) 場合に `True` を、それ以外の場合は `False` を返します。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``WIFSTOPPED`(status)

  プロセスが停止された (stop) 場合に `True` を、それ以外の場合は `False` を返します。

  利用できる環境: Unix

`os.``WIFSIGNALED`(status)

  プロセスがシグナルによって終了した (exit) 場合に `True` を、それ以外の場合は `False` を返します。

  利用できる環境: Unix

`os.``WIFEXITED`(status)

  プロセスが exit(2) システムコールで終了した場合に `True` を、それ以外の場合は `False` を返します。

  利用できる環境: Unix

`os.``WEXITSTATUS`(status)

  `WIFEXITED(status)` が真の場合、 exit(2) システムコールに渡された整数パラメタを返します。そうでない場合、返される値には意味がありません。

  利用できる環境: Unix

`os.``WSTOPSIG`(status)

  プロセスを停止させたシグナル番号を返します。

  利用できる環境: Unix

`os.``WTERMSIG`(status)

  プロセスを終了させたシグナル番号を返します。

  利用できる環境: Unix

## 15.1.6. 雑多なシステム情報

`os.``confstr`(name)

  文字列形式によるシステム設定値 (system configuration value)を返します。 name には取得したい設定名を指定します; この値は定義済みのシステム値名を表す文字列にすることができます; 名前は多くの標準 (POSIX.1、 Unix 95、 Unix 98 その他) で定義されています。ホストオペレーティングシステムの関知する名前は `confstr_names` 辞書のキーとして与えられています。このマップ型オブジェクトに入っていない設定変数については、 name に整数を渡してもかまいません。

  name に指定された設定値が定義されていない場合、 `None` を返します。

  もし name が文字列でかつ不明である場合、 `ValueError` を送出します。 name の指定値がホストシステムでサポートされておらず、 `confstr_names` にも入っていない場合、 `errno.EINVAL` をエラー番号として `OSError` を送出します。

  利用できる環境: Unix

`os.``confstr_names`

  `confstr()` が受理する名前を、ホストオペレーティングシステムで定義されている整数値に対応付けている辞書です。この辞書はシステムでどの設定名が定義されているかを決定するために利用できます。

  利用できる環境: Unix

`os.``getloadavg`()

  過去 1 分、5 分、15分間で、システムで走っているキューの平均プロセス数を返します。平均負荷が得られない場合には `OSError` を送出します。

  利用できる環境: Unix

  バージョン 2.3 で追加.

`os.``sysconf`(name)

  整数値のシステム設定値を返します。 name で指定された設定値が定義されていない場合、 `-1` が返されます。 name に関するコメントとしては、 `confstr()` で述べた内容が同様に当てはまります; 既知の設定名についての情報を与える辞書は `sysconf_names` で与えられています。

  利用できる環境: Unix

`os.``sysconf_names`

  `sysconf()` が受理する名前を、ホストオペレーティングシステムで定義されている整数値に対応付けている辞書です。この辞書はシステムでどの設定名が定義されているかを決定するために利用できます。

  利用できる環境: Unix

以下のデータ値はパス名編集操作をサポートするために利用されます。これらの値は全てのプラットフォームで定義されています。

パス名に対する高レベルの操作は `os.path` モジュールで定義されています。

`os.``curdir`

  現在のディレクトリ参照するためにオペレーティングシステムで使われる文字列定数です。 POSIX と Windows では `'.'` になります。 `os.path` からも利用できます。

`os.``pardir`

  親ディレクトリを参照するためにオペレーティングシステムで使われる文字列定数です。 POSIX と Windows では `'..'` になります。 `os.path` からも利用できます。

`os.``sep`

  パス名を要素に分割するためにオペレーティングシステムで利用されている文字です。例えば POSIX では `'/'` で、Windowsでは `'\\'` です。しかし、このことを知っているだけではパス名を解析したり、パス名同士を結合したりするには不十分です — こうした操作には `os.path.split()` や `os.path.join()` を使ってください — が、たまに便利なこともあります。 `os.path` からも利用できます。

`os.``altsep`

  文字パス名を要素に分割する際にオペレーティングシステムで利用されるもう一つの文字で、分割文字が一つしかない場合には `None` になります。この値は `sep` がバックスラッシュとなっている DOS や Windows システムでは `'/'` に設定されています。 `os.path` からも利用できます。

`os.``extsep`

  ベースのファイル名と拡張子を分ける文字。たとえば、 `os.py` だったら `'.'` です。 `os.path` からも利用できます。

  バージョン 2.2 で追加.

`os.``pathsep`

  (`PATH` のような) サーチパス内の要素を分割するためにオペレーティングシステムが慣習的に用いる文字で、POSIX における `':'` や DOS および Windows における `';'` に相当します。 `os.path` からも利用できます。

`os.``defpath`

  `exec*p*()` や `spawn*p*()` において、環境変数辞書内に `'PATH'` キーがない場合に使われる標準設定のサーチパスです。 `os.path` からも利用できます。

`os.``linesep`

  現在のプラットフォーム上で行を分割 (あるいは終端) するために用いられている文字列です。この値は例えば POSIX での `'\n'` や Mac OS での `'\r'` のように、単一の文字にもなりますし、例えば Windows での `'\r\n'` のように複数の文字列にもなります。テキストモードで開いたファイルに書き込むときには、 os.linesep を利用しないでください。全てのプラットフォームで、単一の `'\n'` を使ってください。

`os.``devnull`

  ヌルデバイス (null device) のファイルパスです。例えばPOSIX では `'/dev/null'` で、 Windows では `'nul'` です。この値は `os.path` からも利用できます。

  バージョン 2.4 で追加.

## 15.1.7. 雑多な関数

`os.``urandom`(n)

  暗号に関する用途に適した n バイトからなるランダムな文字列を返します。

  この関数は OS 固有の乱数発生源からランダムなバイト列を生成して返します。この関数の返すデータは暗号を用いたアプリケーションで十分利用できる程度に予測不能ですが、実際のクオリティは OS の実装によって異なります。 Unix系のシステムでは `/dev/urandom` への問い合わせを行い、 Windows では `CryptGenRandom()` を使います。乱数発生源が見つからない場合、 `NotImplementedError` を送出します。

  バージョン 2.4 で追加.

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python 標準ライブラリ »
- 15. 汎用オペレーティングシステムサービス »