os —その他のオペレーティングシステムインターフェイス—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.9/library/os
移動先:案内検索

os —その他のオペレーティングシステムインターフェイス

ソースコード: :source: `Lib / os.py`



このモジュールは、オペレーティングシステムに依存する機能を使用するポータブルな方法を提供します。 ファイルの読み取りまたは書き込みのみを行う場合は open()を、パスを操作する場合は os.path モジュールを、すべての行を読み取る場合はを参照してください。コマンドラインのすべてのファイルで、 fileinput モジュールを参照してください。 一時ファイルとディレクトリの作成については、 tempfile モジュールを参照してください。高レベルのファイルとディレクトリの処理については、 shutil モジュールを参照してください。

これらの機能の可用性に関する注意:

  • Pythonのすべての組み込みオペレーティングシステム依存モジュールの設計は、同じ機能が利用可能である限り、同じインターフェイスを使用するようになっています。 たとえば、関数os.stat(path)は、パスに関する統計情報を同じ形式で返します(これはたまたまPOSIXインターフェイスで発生したものです)。
  • 特定のオペレーティングシステムに固有の拡張機能も os モジュールから入手できますが、それらを使用することはもちろん移植性に対する脅威です。
  • パスまたはファイル名を受け入れるすべての関数は、バイトオブジェクトと文字列オブジェクトの両方を受け入れ、パスまたはファイル名が返された場合、同じタイプのオブジェクトになります。
  • VxWorksでは、os.fork、os.execv、およびos.spawn * p *はサポートされていません。

ノート

このモジュールのすべての関数は、無効またはアクセスできないファイル名とパス、または正しいタイプを持つがオペレーティングシステムによって受け入れられないその他の引数の場合、 OSError (またはそのサブクラス)を発生させます。


exception os.error
組み込みの OSError 例外のエイリアス。
os.name

インポートされたオペレーティングシステムに依存するモジュールの名前。 現在、'posix''nt''java'の名前が登録されています。

も参照してください

sys.platform の粒度はより細かくなります。 os.uname()は、システムに依存するバージョン情報を提供します。

platform モジュールは、システムのIDの詳細なチェックを提供します。

ファイル名、コマンドライン引数、および環境変数

Pythonでは、ファイル名、コマンドライン引数、および環境変数は文字列型を使用して表されます。 一部のシステムでは、これらの文字列をオペレーティングシステムに渡す前に、バイトとの間でデコードする必要があります。 Pythonは、ファイルシステムエンコーディングを使用してこの変換を実行します( sys.getfilesystemencoding()を参照)。

バージョン3.1で変更:一部のシステムでは、ファイルシステムエンコーディングを使用した変換が失敗する場合があります。 この場合、Pythonは surrogateescapeエンコーディングエラーハンドラーを使用します。これは、デコード時にデコード不可能なバイトがUnicode文字U + DCxxに置き換えられ、エンコード時に元のバイトに再度変換されることを意味します。


ファイルシステムエンコーディングは、128未満のすべてのバイトを正常にデコードすることを保証する必要があります。 ファイルシステムエンコーディングがこの保証を提供できない場合、API関数はUnicodeErrorsを発生させる可能性があります。


プロセスパラメータ

これらの関数とデータ項目は情報を提供し、現在のプロセスとユーザーを操作します。

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

文字列環境を表す mapping オブジェクト。 たとえば、environ['HOME']は(一部のプラットフォームでは)ホームディレクトリのパス名であり、Cのgetenv("HOME")と同等です。

このマッピングは、 os モジュールが最初にインポートされたとき、通常はsite.pyの処理の一部としてPythonの起動時にキャプチャされます。 この時間以降に行われた環境への変更は、os.environを直接変更することによって行われた変更を除いて、os.environには反映されません。

このマッピングは、環境を変更したり、環境を照会したりするために使用できます。 putenv()は、マッピングが変更されると自動的に呼び出されます。

Unixでは、キーと値は sys.getfilesystemencoding()および'surrogateescape'エラーハンドラーを使用します。 別のエンコーディングを使用する場合は、 environment を使用してください。

ノート

putenv()を直接呼び出しても、os.environは変更されないため、os.environを変更することをお勧めします。

ノート

FreeBSDやmacOSを含む一部のプラットフォームでは、environを設定するとメモリリークが発生する可能性があります。 putenv()のシステムドキュメントを参照してください。

このマッピングの項目を削除して、環境変数を設定解除できます。 unsetenv()は、アイテムがos.environから削除されたとき、およびpop()またはclear()メソッドのいずれかが呼び出されたときに自動的に呼び出されます。

バージョン3.9で変更: PEP 584 のマージ(|)および更新(|=)演算子をサポートするように更新。

os.environb

環境のバイトバージョン:環境をバイト文字列として表すマッピングオブジェクト。 environenvironb が同期されます( environb の更新 environ を変更し、その逆も同様です)。

environb は、 supports_bytes_environTrueの場合にのみ使用できます。

バージョン3.2の新機能。

バージョン3.9で変更: PEP 584 のマージ(|)および更新(|=)演算子をサポートするように更新。

os.chdir(path)

os.fchdir(fd)
os.getcwd()

これらの機能については、ファイルとディレクトリで説明されています。
os.fsencode(filename)

パスのような ファイル名'surrogateescape'エラーハンドラー、またはWindowsでは'strict'を使用してファイルシステムエンコーディングにエンコードします。 バイトを変更せずに返します。

fsdecode()は逆関数です。

バージョン3.2の新機能。

バージョン3.6で変更: os.PathLike インターフェースを実装するオブジェクトを受け入れるためのサポートが追加されました。

os.fsdecode(filename)

パスのような ファイル名'surrogateescape'エラーハンドラー、またはWindowsでは'strict'を使用してファイルシステムエンコーディングからデコードします。 str を変更せずに返します。

fsencode()は逆関数です。

バージョン3.2の新機能。

バージョン3.6で変更: os.PathLike インターフェースを実装するオブジェクトを受け入れるためのサポートが追加されました。

os.fspath(path)

パスのファイルシステム表現を返します。

str または bytes が渡された場合、変更されずに返されます。 それ以外の場合は、__fspath__()が呼び出され、 str または bytes オブジェクトである限りその値が返されます。 それ以外の場合はすべて、 TypeError が発生します。

バージョン3.6の新機能。

class os.PathLike

ファイルシステムパスを表すオブジェクトの抽象基本クラスpathlib.PurePath

バージョン3.6の新機能。

os.getenv(key, default=None)

環境変数 key が存在する場合はその値を返し、存在しない場合は default の値を返します。 keydefault および結果はstrです。

Unixでは、キーと値は sys.getfilesystemencoding()および'surrogateescape'エラーハンドラーでデコードされます。 別のエンコーディングを使用する場合は、 os.getenvb()を使用してください。

os.getenvb(key, default=None)

環境変数 key が存在する場合はその値を返し、存在しない場合は default の値を返します。 キーデフォルトおよび結果はバイトです。

getenvb()は、 supports_bytes_environTrueの場合にのみ使用できます。

バージョン3.2の新機能。

os.get_exec_path(env=None)

プロセスの起動時に、シェルと同様に、名前付き実行可能ファイルを検索するディレクトリのリストを返します。 env は、指定されている場合、でPATHを検索するための環境変数ディクショナリである必要があります。 デフォルトでは、 envNoneの場合、 environ が使用されます。

バージョン3.2の新機能。

os.getegid()
現在のプロセスの実効グループIDを返します。 これは、現在のプロセスで実行されているファイルの「setid」ビットに対応します。
os.geteuid()
現在のプロセスの有効なユーザーIDを返します。
os.getgid()
現在のプロセスの実際のグループIDを返します。
os.getgrouplist(user, group)

user が属するグループIDのリストを返します。 group がリストにない場合は、リストに含まれます。 通常、 group は、 user のパスワードレコードのグループIDフィールドとして指定されます。

バージョン3.3の新機能。

os.getgroups()

現在のプロセスに関連付けられている補足グループIDのリストを返します。

ノート

macOSでは、 getgroups()の動作は他のUnixプラットフォームとは多少異なります。 Pythonインタープリターが10.5以前のデプロイメントターゲットで構築されている場合、 getgroups()は現在のユーザープロセスに関連付けられている有効なグループIDのリストを返します。 このリストは、システム定義のエントリ数(通常は16)に制限されており、適切な特権がある場合は、 setgroups()を呼び出すことで変更できます。 10.5より大きいデプロイメントターゲットでビルドされた場合、 getgroups()は、プロセスの有効なユーザーIDに関連付けられたユーザーの現在のグループアクセスリストを返します。 グループアクセスリストは、プロセスの存続期間中に変更される可能性があり、 setgroups()の呼び出しの影響を受けず、その長さは16に制限されません。 展開ターゲット値MACOSX_DEPLOYMENT_TARGETは、 sysconfig.get_config_var()で取得できます。

os.getlogin()
プロセスの制御端末にログインしているユーザーの名前を返します。 ほとんどの場合、 getpass.getuser()を使用すると、環境変数 LOGNAMEまたは USERNAMEはユーザーが誰であるかを確認し、pwd.getpwuid(os.getuid())[0]にフォールバックして現在の実際のユーザーIDのログイン名を取得します。
os.getpgid(pid)
プロセスID pid のプロセスのプロセスグループIDを返します。 pid が0の場合、現在のプロセスのプロセスグループIDが返されます。
os.getpgrp()
現在のプロセスグループのIDを返します。
os.getpid()
現在のプロセスIDを返します。
os.getppid()

親のプロセスIDを返します。 親プロセスが終了すると、Unixでは返されるIDはinitプロセス(1)の1つであり、Windowsでは同じIDであり、別のプロセスですでに再利用されている可能性があります。

バージョン3.2で変更: Windowsのサポートが追加されました。

os.getpriority(which, who)

プログラムのスケジューリングの優先順位を取得します。 whichPRIO_PROCESSPRIO_PGRP 、または PRIO_USER のいずれかであり、 who はに関連して解釈されますX145X] which ( PRIO_PROCESS のプロセス識別子、 PRIO_PGRP のプロセスグループ識別子、および PRIO_USER のユーザーID)。 who のゼロ値は、(それぞれ)呼び出しプロセス、呼び出しプロセスのプロセスグループ、または呼び出しプロセスの実際のユーザーIDを示します。

バージョン3.3の新機能。

os.PRIO_PROCESS
os.PRIO_PGRP
os.PRIO_USER

getpriority()および setpriority()関数のパラメーター。

バージョン3.3の新機能。

os.getresuid()

現在のプロセスの実際の、効果的な、保存されたユーザーIDを示すタプル(ruid、euid、suid)を返します。

バージョン3.2の新機能。

os.getresgid()

現在のプロセスの実際の、効果的な、保存されたグループIDを示すタプル(rgid、egid、sgid)を返します。

バージョン3.2の新機能。

os.getuid()
現在のプロセスの実際のユーザーIDを返します。
os.initgroups(username, gid)

システムinitgroups()を呼び出して、指定されたユーザー名がメンバーであるすべてのグループと指定されたグループIDでグループアクセスリストを初期化します。

バージョン3.2の新機能。

os.putenv(key, value)

key という名前の環境変数を文字列 value に設定します。 このような環境の変更は、 os.system()popen()または fork()および execv()で開始されるサブプロセスに影響します。 。

os.environのアイテムへの割り当ては、 putenv()への対応する呼び出しに自動的に変換されます。 ただし、 putenv()を呼び出してもos.environは更新されないため、実際にはos.environのアイテムに割り当てることをお勧めします。

ノート

FreeBSDやmacOSを含む一部のプラットフォームでは、environを設定するとメモリリークが発生する可能性があります。 putenv()のシステムドキュメントを参照してください。

バージョン3.9で変更:この機能は常に利用可能になりました。

os.setegid(egid)
現在のプロセスの実効グループIDを設定します。
os.seteuid(euid)
現在のプロセスの有効なユーザーIDを設定します。
os.setgid(gid)
現在のプロセスのグループIDを設定します。
os.setgroups(groups)

現在のプロセスに関連付けられている補足グループIDのリストを groups に設定します。 groups はシーケンスである必要があり、各要素はグループを識別する整数である必要があります。 この操作は通常、スーパーユーザーのみが使用できます。

ノート

macOSでは、グループの長さは、システムで定義された有効なグループIDの最大数(通常は16)を超えてはなりません。 setgroups()を呼び出して同じグループリストセットを返さない場合については、 getgroups()のドキュメントを参照してください。

os.setpgrp()
実装されているバージョン(存在する場合)に応じて、システムコールsetpgrp()またはsetpgrp(0, 0)を呼び出します。 セマンティクスについては、Unixのマニュアルを参照してください。
os.setpgid(pid, pgrp)
システムコールsetpgid()を呼び出して、ID pid のプロセスのプロセスグループIDをID pgrp のプロセスグループに設定します。 セマンティクスについては、Unixのマニュアルを参照してください。
os.setpriority(which, who, priority)

プログラムのスケジューリングの優先順位を設定します。 whichPRIO_PROCESSPRIO_PGRP 、または PRIO_USER のいずれかであり、 who はに関連して解釈されますX145X] which ( PRIO_PROCESS のプロセス識別子、 PRIO_PGRP のプロセスグループ識別子、および PRIO_USER のユーザーID)。 who のゼロ値は、(それぞれ)呼び出しプロセス、呼び出しプロセスのプロセスグループ、または呼び出しプロセスの実際のユーザーIDを示します。 priority は、-20から19の範囲の値です。 デフォルトの優先度は0です。 優先度が低いほど、スケジューリングが有利になります。

バージョン3.3の新機能。

os.setregid(rgid, egid)
現在のプロセスの実際の有効なグループIDを設定します。
os.setresgid(rgid, egid, sgid)

現在のプロセスの実際の、効果的な、保存されたグループIDを設定します。

バージョン3.2の新機能。

os.setresuid(ruid, euid, suid)

現在のプロセスの実際の、効果的な、保存されたユーザーIDを設定します。

バージョン3.2の新機能。

os.setreuid(ruid, euid)
現在のプロセスの実際の有効なユーザーIDを設定します。
os.getsid(pid)
システムコールgetsid()を呼び出します。 セマンティクスについては、Unixのマニュアルを参照してください。
os.setsid()
システムコールsetsid()を呼び出します。 セマンティクスについては、Unixのマニュアルを参照してください。
os.setuid(uid)
現在のプロセスのユーザーIDを設定します。
os.strerror(code)
コードのエラーコードに対応するエラーメッセージを返します。 不明なエラー番号が与えられたときにstrerror()NULLを返すプラットフォームでは、 ValueError が発生します。
os.supports_bytes_environ

True環境のネイティブOSタイプがバイトの場合(例: False(Windowsの場合)。

バージョン3.2の新機能。

os.umask(mask)
現在の数値umaskを設定し、前のumaskを返します。
os.uname()

現在のオペレーティングシステムを識別する情報を返します。 戻り値は、次の5つの属性を持つオブジェクトです。

  • sysname-オペレーティングシステム名

  • nodename-ネットワーク上のマシンの名前(実装定義)

  • release-オペレーティングシステムのリリース

  • version-オペレーティングシステムのバージョン

  • machine-ハードウェア識別子

下位互換性のために、このオブジェクトは反復可能であり、sysnamenodenamereleaseversion、および [を含む5タプルのように動作します。 X149X]この順序で。

一部のシステムは、nodenameを8文字または先頭のコンポーネントに切り捨てます。 ホスト名を取得するためのより良い方法は、 socket.gethostname()またはsocket.gethostbyaddr(socket.gethostname())です。

バージョン3.3で変更:戻り値のタイプがタプルから名前付き属性を持つタプルのようなオブジェクトに変更されました。

os.unsetenv(key)

key という名前の環境変数の設定を解除(削除)します。 このような環境の変更は、 os.system()popen()または fork()および execv()で開始されるサブプロセスに影響します。 。

os.environ内のアイテムの削除は、 unsetenv()への対応する呼び出しに自動的に変換されます。 ただし、 unsetenv()を呼び出してもos.environは更新されないため、実際にはos.environのアイテムを削除することをお勧めします。

バージョン3.9で変更:この機能は常に利用可能になり、Windowsでも利用できるようになりました。


ファイルオブジェクトの作成

これらの関数は、新しいファイルオブジェクトを作成します。 (ファイル記述子を開くには、 open()も参照してください。)

os.fdopen(fd, *args, **kwargs)
ファイル記述子 fd に接続されている開いているファイルオブジェクトを返します。 これは open()組み込み関数のエイリアスであり、同じ引数を受け入れます。 唯一の違いは、 fdopen()の最初の引数は常に整数でなければならないということです。


ファイル記述子の操作

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

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

fileno()メソッドを使用して、必要に応じてファイルオブジェクトに関連付けられたファイル記述子を取得できます。 ファイル記述子を直接使用すると、データの内部バッファリングなどの側面を無視して、ファイルオブジェクトメソッドがバイパスされることに注意してください。

os.close(fd)

ファイル記述子 fd を閉じます。

ノート

この関数は低レベルのI / Oを対象としており、 os.open()または pipe()によって返されるファイル記述子に適用する必要があります。 組み込み関数 open()または popen()または fdopen()によって返される「ファイルオブジェクト」を閉じるには、そのを使用します。 close()メソッド。

os.closerange(fd_low, fd_high)

エラーを無視して、 fd_low (包括的)から fd_high (排他的)までのすべてのファイル記述子を閉じます。 同等(ただし、はるかに高速):

for fd in range(fd_low, fd_high):
    try:
        os.close(fd)
    except OSError:
        pass
os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)

オフセット offset_src から始まるファイル記述子 src からオフセット offset_dst [から始まるファイル記述子 dstcount バイトをコピーします。 X171X]。 offset_src がNoneの場合、 src が現在の位置から読み取られます。 それぞれ offset_dst の場合。 srcdst が指すファイルは、同じファイルシステムに存在する必要があります。そうでない場合、 OSErrorerrnoに設定して発生します。 errno.EXDEV

このコピーは、カーネルからユーザースペースにデータを転送してからカーネルに戻すという追加コストなしで実行されます。 さらに、一部のファイルシステムは追加の最適化を実装できます。 コピーは、両方のファイルがバイナリとして開かれているかのように実行されます。

戻り値は、コピーされたバイト数です。 これは、要求された金額よりも少ない可能性があります。

バージョン3.8の新機能。

os.device_encoding(fd)
fd に関連付けられているデバイスが端末に接続されている場合、そのエンコーディングを説明する文字列を返します。 それ以外の場合は、 None を返します。
os.dup(fd)

ファイル記述子 fd の複製を返します。 新しいファイル記述子は継承不可です。

Windowsでは、標準ストリーム(0:stdin、1:stdout、2:stderr)を複製する場合、新しいファイル記述子は継承可能です。

バージョン3.4で変更:新しいファイル記述子は継承できなくなりました。

os.dup2(fd, fd2, inheritable=True)

ファイル記述子 fdfd2 に複製し、必要に応じて後者を最初に閉じます。 fd2 を返します。 新しいファイル記述子は、デフォルトで inheritable であるか、 inheritableFalseの場合は非継承です。

バージョン3.4で変更:オプションの inheritable パラメーターを追加します。

バージョン3.7で変更:成功すると fd2 を返します。 以前は、Noneは常に返されていました。

os.fchmod(fd, mode)
fd で指定されたファイルのモードを数値の mode に変更します。 mode の可能な値については、 chmod()のドキュメントを参照してください。 Python 3.3以降、これはos.chmod(fd, mode)と同等です。
os.fchown(fd, uid, gid)
fd で指定されたファイルの所有者とグループIDを数値の uidgid に変更します。 IDの1つを変更しないままにするには、-1に設定します。 chown()を参照してください。 Python 3.3以降、これはos.chown(fd, uid, gid)と同等です。
os.fdatasync(fd)

ファイル記述子 fd を含むファイルをディスクに強制的に書き込みます。 メタデータの更新を強制しません。

ノート

この機能はMacOSでは利用できません。

os.fpathconf(fd, name)

開いているファイルに関連するシステム構成情報を返します。 name は、取得する構成値を指定します。 定義されたシステム値の名前である文字列である可能性があります。 これらの名前は、多くの標準(POSIX.1、Unix 95、Unix 98など)で指定されています。 一部のプラットフォームでは、追加の名前も定義されています。 ホストオペレーティングシステムに認識されている名前は、pathconf_namesディクショナリに記載されています。 そのマッピングに含まれていない構成変数の場合、 name の整数の受け渡しも受け入れられます。

name が文字列であり、不明な場合、 ValueError が発生します。 name の特定の値がホストシステムでサポートされていない場合、pathconf_namesに含まれていても、 OSErrorerrno.EINVALで発生します。エラー番号は

Python 3.3以降、これはos.pathconf(fd, name)と同等です。

os.fstat(fd)

ファイル記述子 fd のステータスを取得します。 stat_result オブジェクトを返します。

Python 3.3以降、これはos.stat(fd)と同等です。

も参照してください

stat()関数。

os.fstatvfs(fd)
statvfs()のように、ファイル記述子 fd に関連付けられたファイルを含むファイルシステムに関する情報を返します。 Python 3.3以降、これはos.statvfs(fd)と同等です。
os.fsync(fd)

ファイル記述子 fd を含むファイルをディスクに強制的に書き込みます。 Unixでは、これはネイティブのfsync()関数を呼び出します。 Windowsでは、MS _commit()機能。

バッファリングされたPython ファイルオブジェクト f から始める場合は、最初にf.flush()を実行し、次にos.fsync(f.fileno())を実行して、すべての内部バッファを確認します。 f に関連付けられているものがディスクに書き込まれます。

os.ftruncate(fd, length)

ファイル記述子 fd に対応するファイルを切り捨てて、サイズが最大長さバイトになるようにします。 Python 3.3以降、これはos.truncate(fd, length)と同等です。

バージョン3.5で変更: Windowsのサポートが追加されました

os.get_blocking(fd)

ファイル記述子のブロックモードを取得します。 O_NONBLOCK フラグが設定されている場合はFalse、フラグがクリアされている場合はTrueです。

set_blocking()および socket.socket.setblocking()も参照してください。

バージョン3.5の新機能。

os.isatty(fd)
ファイル記述子 fd が開いていて、tty(-like)デバイスに接続されている場合は、Trueを返します。それ以外の場合は、Falseを返します。
os.lockf(fd, cmd, len)

開いているファイル記述子にPOSIXロックを適用、テスト、または削除します。 fd は開いているファイル記述子です。 cmd は、使用するコマンドを指定します- F_LOCKF_TLOCKF_ULOCK 、または F_TEST のいずれか。 len は、ロックするファイルのセクションを指定します。

バージョン3.3の新機能。

os.F_LOCK
os.F_TLOCK
os.F_ULOCK
os.F_TEST

lockf()が実行するアクションを指定するフラグ。

バージョン3.3の新機能。

os.lseek(fd, pos, how)
ファイル記述子 fd の現在の位置を how によって変更された位置 pos に設定します: SEEK_SET または0を設定しますファイルの先頭を基準にした位置。 SEEK_CUR または1を使用して、現在の位置を基準にして設定します。 SEEK_END または2を使用して、ファイルの終わりを基準にして設定します。 新しいカーソル位置を最初からバイト単位で返します。
os.SEEK_SET
os.SEEK_CUR
os.SEEK_END

lseek()関数のパラメーター。 それらの値は、それぞれ0、1、および2です。

バージョン3.3の新機能:一部のオペレーティングシステムは、os.SEEK_HOLEos.SEEK_DATAなどの追加の値をサポートする可能性があります。

os.open(path, flags, mode=0o777, *, dir_fd=None)

ファイル path を開き、 flags に従ってさまざまなフラグを設定し、場合によっては mode に従ってそのモードを設定します。 モードを計算するとき、現在のumask値は最初にマスクされます。 新しく開いたファイルのファイル記述子を返します。 新しいファイル記述子は継承不可です。

フラグとモードの値の説明については、Cランタイムのドキュメントを参照してください。 フラグ定数( O_RDONLYO_WRONLY など)は、 os モジュールで定義されています。 特に、Windowsでは、バイナリモードでファイルを開くために O_BINARY を追加する必要があります。

この関数は、 dir_fd パラメーターを使用して、ディレクトリ記述子に関連するパスをサポートできます。

バージョン3.4で変更:新しいファイル記述子は継承できなくなりました。

ノート

この機能は、低レベルのI / Oを対象としています。 通常の使用法では、組み込み関数 open()を使用します。この関数は、read()およびwrite()メソッド(およびその他多数)を使用してファイルオブジェクトを返します。 )。 ファイル記述子をファイルオブジェクトでラップするには、 fdopen()を使用します。

バージョン3.3の新機能: dir_fd 引数。

バージョン3.5で変更:システムコールが中断され、シグナルハンドラが例外を発生させない場合、関数は InterruptedError 例外を発生させる代わりに、システムコールを再試行するようになりました([X223Xを参照] ] PEP 475 (理論的根拠)。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

次の定数は、 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_CLOEXEC

上記の定数はUnixでのみ使用できます。

バージョン3.3で変更: O_CLOEXEC 定数を追加。

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
os.O_PATH
os.O_TMPFILE
os.O_SHLOCK
os.O_EXLOCK

上記の定数は拡張機能であり、Cライブラリで定義されていない場合は存在しません。

バージョン3.4で変更:それをサポートするシステムに O_PATH を追加。 O_TMPFILE を追加します。これはLinuxカーネル3.11以降でのみ使用できます。

os.openpty()

新しい疑似端末ペアを開きます。 ptyとttyのファイル記述子のペア(master, slave)をそれぞれ返します。 新しいファイル記述子は継承不可です。 (少し)移植性の高いアプローチの場合は、 pty モジュールを使用します。

バージョン3.4で変更:新しいファイル記述子は継承できなくなりました。

os.pipe()

パイプを作成します。 それぞれ読み取りと書き込みに使用できるファイル記述子のペア(r, w)を返します。 新しいファイル記述子は継承不可です。

バージョン3.4で変更:新しいファイル記述子は継承できなくなりました。

os.pipe2(flags)

フラグをアトミックに設定してパイプを作成します。 フラグは、 O_NONBLOCKO_CLOEXEC の1つ以上の値をOR演算することで作成できます。 それぞれ読み取りと書き込みに使用できるファイル記述子のペア(r, w)を返します。

バージョン3.3の新機能。

os.posix_fallocate(fd, offset, len)

offset から始まり、 len バイトまで、 fd で指定されたファイルに十分なディスク容量が割り当てられていることを確認します。

バージョン3.3の新機能。

os.posix_fadvise(fd, offset, len, advice)

特定のパターンでデータにアクセスする意図を発表し、カーネルが最適化できるようにします。 このアドバイスは、 fd で指定されたファイルの領域に適用され、 offset で始まり、 len バイトまで続きます。 Advice は、 POSIX_FADV_NORMALPOSIX_FADV_SEQUENTIALPOSIX_FADV_RANDOMPOSIX_FADV_NOREUSE 、、のいずれかです。 POSIX_FADV_DONTNEED

バージョン3.3の新機能。

os.POSIX_FADV_NORMAL
os.POSIX_FADV_SEQUENTIAL
os.POSIX_FADV_RANDOM
os.POSIX_FADV_NOREUSE
os.POSIX_FADV_WILLNEED
os.POSIX_FADV_DONTNEED

posix_fadvise()Advice で使用できるフラグで、使用される可能性のあるアクセスパターンを指定します。

バージョン3.3の新機能。

os.pread(fd, n, offset)

ファイル記述子 fd から offset の位置で最大 n バイトを読み取り、ファイルオフセットは変更しません。

読み取ったバイトを含むバイト文字列を返します。 fd によって参照されるファイルの終わりに達した場合、空のバイトオブジェクトが返されます。

バージョン3.3の新機能。

os.preadv(fd, buffers, offset, flags=0)

offset の位置にあるファイル記述子 fd から、ファイルオフセットを変更せずに、可変バイトのようなオブジェクト バッファに読み込みます。 データがいっぱいになるまで各バッファにデータを転送してから、シーケンス内の次のバッファに移動して、残りのデータを保持します。

flags引数には、次のフラグの0個以上のビットごとのORが含まれています。

実際に読み取られた合計バイト数を返します。これは、すべてのオブジェクトの合計容量よりも少ない場合があります。

オペレーティングシステムは、使用できるバッファの数に制限( sysconf()'SC_IOV_MAX')を設定する場合があります。

os.readv()os.pread()の機能を組み合わせます。

バージョン3.7の新機能。

os.RWF_NOWAIT

すぐに利用できないデータを待たないでください。 このフラグが指定されている場合、システムコールは、バッキングストレージからデータを読み取る必要がある場合、またはロックを待機する必要がある場合に、即座に戻ります。

一部のデータが正常に読み取られた場合、読み取られたバイト数が返されます。 バイトが読み取られなかった場合は、-1が返され、errnoが errno.EAGAIN に設定されます。

バージョン3.7の新機能。

os.RWF_HIPRI

優先度の高い読み取り/書き込み。 ブロックベースのファイルシステムがデバイスのポーリングを使用できるようにします。これにより、待ち時間は短くなりますが、追加のリソースを使用する場合があります。

現在、Linuxでは、この機能は O_DIRECT フラグを使用して開かれたファイル記述子でのみ使用できます。

バージョン3.7の新機能。

os.pwrite(fd, str, offset)

str のバイト文字列を offset の位置にあるファイル記述子 fd に書き込み、ファイルオフセットは変更しません。

実際に書き込まれたバイト数を返します。

バージョン3.3の新機能。

os.pwritev(fd, buffers, offset, flags=0)

バッファの内容をファイル記述子 fd のオフセットオフセットに書き込みます。ファイルオフセットは変更しません。 バッファは、バイトのようなオブジェクトのシーケンスである必要があります。 バッファは配列順に処理されます。 最初のバッファの内容全体が書き込まれてから、2番目のバッファに進みます。

flags引数には、次のフラグの0個以上のビットごとのORが含まれています。

実際に書き込まれた合計バイト数を返します。

オペレーティングシステムは、使用できるバッファの数に制限( sysconf()'SC_IOV_MAX')を設定する場合があります。

os.writev()os.pwrite()の機能を組み合わせます。

バージョン3.7の新機能。

os.RWF_DSYNC

O_DSYNC open(2)フラグと同等の書き込みごとのフラグを提供します。 このフラグ効果は、システムコールによって書き込まれたデータ範囲にのみ適用されます。

バージョン3.7の新機能。

os.RWF_SYNC

O_SYNC open(2)フラグと同等の書き込みごとのフラグを提供します。 このフラグ効果は、システムコールによって書き込まれたデータ範囲にのみ適用されます。

バージョン3.7の新機能。

os.read(fd, n)

ファイル記述子 fd から最大 n バイトを読み取ります。

読み取ったバイトを含むバイト文字列を返します。 fd によって参照されるファイルの終わりに達した場合、空のバイトオブジェクトが返されます。

ノート

この関数は低レベルのI / Oを対象としており、 os.open()または pipe()によって返されるファイル記述子に適用する必要があります。 組み込み関数 open()popen()fdopen()、または sysによって返される「ファイルオブジェクト」を読み取るには.stdin 、そのread()またはreadline()メソッドを使用します。

バージョン3.5で変更:システムコールが中断され、シグナルハンドラが例外を発生させない場合、関数は InterruptedError 例外を発生させる代わりに、システムコールを再試行するようになりました([X223Xを参照] ] PEP 475 (理論的根拠)。

os.sendfile(out_fd, in_fd, offset, count)
os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)

count バイトをファイル記述子 in_fd から offset から始まるファイル記述子 out_fd にコピーします。 送信されたバイト数を返します。 EOFに達したら、0を返します。

最初の関数表記は、 sendfile()を定義するすべてのプラットフォームでサポートされています。

Linuxでは、 offsetNoneとして指定されている場合、バイトは in_fd の現在の位置から読み取られ、 in_fd の位置が更新されます。 。

2番目のケースはmacOSとFreeBSDで使用でき、 headerstrailers は、 in_fd からのデータが書き込まれる前後に書き込まれるバッファの任意のシーケンスです。 最初の場合と同じように返されます。

macOSおよびFreeBSDでは、 count0の値は、 in_fd の終わりに達するまで送信することを指定します。

すべてのプラットフォームは out_fd ファイル記述子としてソケットをサポートし、一部のプラットフォームは他のタイプを許可します(例: 通常のファイル、パイプ)も同様です。

クロスプラットフォームアプリケーションでは、ヘッダートレーラー、およびフラグ引数を使用しないでください。

ノート

sendfile()の上位ラッパーについては、 socket.socket.sendfile()を参照してください。

バージョン3.3の新機能。

バージョン3.9で変更:パラメーター out および inout_fd および in_fd に名前が変更されました。

os.set_blocking(fd, blocking)

指定されたファイル記述子のブロックモードを設定します。 ブロッキングがFalseの場合は、 O_NONBLOCK フラグを設定し、それ以外の場合はフラグをクリアします。

get_blocking()および socket.socket.setblocking()も参照してください。

バージョン3.5の新機能。

os.SF_NODISKIO
os.SF_MNOWAIT
os.SF_SYNC

sendfile()関数のパラメーター(実装でサポートされている場合)。

バージョン3.3の新機能。

os.readv(fd, buffers)

ファイル記述子 fd からいくつかの可変バイトのようなオブジェクト バッファに読み込みます。 データがいっぱいになるまで各バッファにデータを転送してから、シーケンス内の次のバッファに移動して、残りのデータを保持します。

実際に読み取られた合計バイト数を返します。これは、すべてのオブジェクトの合計容量よりも少ない場合があります。

オペレーティングシステムは、使用できるバッファの数に制限( sysconf()'SC_IOV_MAX')を設定する場合があります。

バージョン3.3の新機能。

os.tcgetpgrp(fd)
fdos.open()によって返されるオープンファイル記述子)で指定された端末に関連付けられたプロセスグループを返します。
os.tcsetpgrp(fd, pg)
fdos.open()によって返されるオープンファイル記述子)で指定された端末に関連付けられたプロセスグループを pg に設定します。
os.ttyname(fd)
ファイル記述子 fd に関連付けられた端末デバイスを指定する文字列を返します。 fd が端末デバイスに関連付けられていない場合、例外が発生します。
os.write(fd, str)

str のバイト文字列をファイル記述子 fd に書き込みます。

実際に書き込まれたバイト数を返します。

ノート

この関数は低レベルのI / Oを対象としており、 os.open()または pipe()によって返されるファイル記述子に適用する必要があります。 組み込み関数 open()popen()fdopen()、または sysによって返される「ファイルオブジェクト」を書き込むには.stdout または sys.stderr の場合は、write()メソッドを使用します。

バージョン3.5で変更:システムコールが中断され、シグナルハンドラが例外を発生させない場合、関数は InterruptedError 例外を発生させる代わりに、システムコールを再試行するようになりました([X223Xを参照] ] PEP 475 (理論的根拠)。

os.writev(fd, buffers)

バッファの内容をファイル記述子 fd に書き込みます。 バッファは、バイトのようなオブジェクトのシーケンスである必要があります。 バッファは配列順に処理されます。 最初のバッファの内容全体が書き込まれてから、2番目のバッファに進みます。

実際に書き込まれた合計バイト数を返します。

オペレーティングシステムは、使用できるバッファの数に制限( sysconf()'SC_IOV_MAX')を設定する場合があります。

バージョン3.3の新機能。

端末のサイズを照会する

バージョン3.3の新機能。


os.get_terminal_size(fd=STDOUT_FILENO)

ターミナルウィンドウのサイズを(columns, lines)、タイプ terminal_size のタプルとして返します。

オプションの引数fd(デフォルトSTDOUT_FILENO、または標準出力)は、照会するファイル記述子を指定します。

ファイル記述子が端末に接続されていない場合、 OSError が発生します。

shutil.get_terminal_size()は通常使用される高レベルの関数であり、os.get_terminal_sizeは低レベルの実装です。

class os.terminal_size

ターミナルウィンドウサイズの(columns, lines)を保持するタプルのサブクラス。

columns

ターミナルウィンドウの幅(文字数)。

lines

ターミナルウィンドウの高さ(文字数)。


ファイル記述子の継承

バージョン3.4の新機能。


ファイル記述子には、ファイル記述子を子プロセスに継承できるかどうかを示す「継承可能」フラグがあります。 Python 3.4以降、Pythonによって作成されたファイル記述子はデフォルトでは継承できません。

UNIXでは、継承できないファイル記述子は、新しいプログラムの実行時に子プロセスで閉じられ、他のファイル記述子は継承されます。

Windowsでは、継承できないハンドルとファイル記述子は、常に継承される標準ストリーム(ファイル記述子0、1、2:stdin、stdout、stderr)を除いて、子プロセスで閉じられます。 spawn * 関数を使用すると、すべての継承可能なハンドルとすべての継承可能なファイル記述子が継承されます。 サブプロセスモジュールを使用すると、標準ストリームを除くすべてのファイル記述子が閉じられ、継承可能なハンドルは、 close_fds パラメーターがFalseの場合にのみ継承されます。

os.get_inheritable(fd)
指定されたファイル記述子(ブール値)の「継承可能」フラグを取得します。
os.set_inheritable(fd, inheritable)
指定されたファイル記述子の「継承可能」フラグを設定します。
os.get_handle_inheritable(handle)
指定されたハンドル(ブール値)の「継承可能」フラグを取得します。
os.set_handle_inheritable(handle, inheritable)
指定されたハンドルの「継承可能」フラグを設定します。


ファイルとディレクトリ

一部のUnixプラットフォームでは、これらの関数の多くが次の機能の1つ以上をサポートしています。

  • ファイル記述子の指定:通常、 os モジュールの関数に提供される path 引数は、ファイルパスを指定する文字列である必要があります。 ただし、一部の関数は、 path 引数のオープンファイル記述子を代わりに受け入れるようになりました。 関数は、記述子によって参照されるファイルを操作します。 (POSIXシステムの場合、Pythonは接頭辞fが付いた関数のバリアントを呼び出します(例: chdirの代わりにfchdirを呼び出します)。)

    os.supports_fd を使用して、プラットフォーム上の特定の関数のファイル記述子として path を指定できるかどうかを確認できます。 この機能が利用できない場合、それを使用すると NotImplementedError が発生します。

    関数が dir_fd または follow_symlinks 引数もサポートしている場合、ファイル記述子として path を指定するときに、これらのいずれかを指定するとエラーになります。

  • ディレクトリ記述子に関連するパス: dir_fdNoneでない場合、ディレクトリを参照するファイル記述子である必要があり、操作するパスは相対である必要があります。 その場合、パスはそのディレクトリからの相対パスになります。 パスが絶対パスの場合、 dir_fd は無視されます。 (POSIXシステムの場合、Pythonは、at接尾辞を付け、場合によってはfという接頭辞を付けて関数のバリアントを呼び出します(例: accessの代わりにfaccessatを呼び出します)。

    os.supports_dir_fd を使用して、プラットフォーム上の特定の機能で dir_fd がサポートされているかどうかを確認できます。 使用できない場合は、使用すると NotImplementedError が発生します。

  • シンボリックリンクをたどらない: follow_symlinksFalseであり、操作するパスの最後の要素がシンボリックリンクの場合、関数はシンボリックリンク自体を操作しますリンクが指すファイルではなく。 (POSIXシステムの場合、Pythonは関数のl...バリアントを呼び出します。)

    os.supports_follow_symlinks を使用して、プラットフォーム上の特定の機能で follow_symlinks がサポートされているかどうかを確認できます。 使用できない場合は、使用すると NotImplementedError が発生します。

os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)

実際のuid / gidを使用して、パスへのアクセスをテストします。 ほとんどの操作は有効なuid / gidを使用するため、このルーチンをsuid / sgid環境で使用して、呼び出し元のユーザーが path への指定されたアクセス権を持っているかどうかをテストできます。 モードは、パスの存在をテストするために F_OK である必要があります。または、 R_OK 、[ X141X] W_OK 、および X_OK を使用して、アクセス許可をテストします。 アクセスが許可されている場合は True を返し、許可されていない場合は False を返します。 詳細については、Unixのマニュアルページ access(2)を参照してください。

この関数は、ディレクトリ記述子およびシンボリックリンクに従わないに関連するパスの指定をサポートできます。

effective_idsTrueの場合、 access()は、実際のuid / gidではなく有効なuid / gidを使用してアクセスチェックを実行します。 effective_ids はご使用のプラットフォームではサポートされていない可能性があります。 os.supports_effective_ids を使用して利用可能かどうかを確認できます。 使用できない場合は、使用すると NotImplementedError が発生します。

ノート

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 PermissionError:
    return "some default data"
else:
    with fp:
        return fp.read()

ノート

access()が成功することを示している場合でも、I / O操作が失敗する場合があります。特に、通常のPOSIXパーミッションビットモデルを超えるパーミッションセマンティクスを持つネットワークファイルシステムでの操作の場合はそうです。

バージョン3.3で変更: dir_fdeffective_ids 、および follow_symlinks パラメーターが追加されました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.F_OK

os.R_OK
os.W_OK
os.X_OK

access()mode パラメーターとして渡す値で、 path の存在、可読性、書き込み可能性、実行可能性をそれぞれテストします。
os.chdir(path)

現在の作業ディレクトリをパスに変更します。

この関数は、ファイル記述子の指定をサポートできます。 記述子は、開いているファイルではなく、開いているディレクトリを参照する必要があります。

この関数は、 OSError と、 FileNotFoundErrorPermissionErrorNotADirectoryError などのサブクラスを発生させる可能性があります。

バージョン3.3の新機能:一部のプラットフォームでパスをファイル記述子として指定するためのサポートが追加されました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.chflags(path, flags, *, follow_symlinks=True)

パスのフラグを数値のフラグに設定します。 flags は、( stat モジュールで定義されているように)次の値の組み合わせ(ビット単位のOR)を取ることができます。

この関数は、シンボリックリンクをたどらないをサポートできます。

バージョン3.3の新機能: follow_symlinks 引数。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)

パスのモードを数値モードに変更します。 mode は、次のいずれかの値( stat モジュールで定義)またはそれらのビット単位のOR演算の組み合わせをとることができます。

この関数は、ファイル記述子の指定ディレクトリ記述子に関連するパス、およびシンボリックリンクに従わないをサポートできます。

ノート

Windowsは chmod()をサポートしていますが、ファイルの読み取り専用フラグを設定できるのは(stat.S_IWRITEおよびstat.S_IREAD定数または対応する整数値を介して)のみです。 他のすべてのビットは無視されます。

バージョン3.3の新機能:オープンファイル記述子として path を指定するためのサポート、および dir_fd および follow_symlinks 引数を追加しました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)

パスの所有者とグループIDを数値の uidgid に変更します。 IDの1つを変更しないままにするには、-1に設定します。

この関数は、ファイル記述子の指定ディレクトリ記述子に関連するパス、およびシンボリックリンクに従わないをサポートできます。

数値IDに加えて名前を受け入れる高レベルの関数については、 shutil.chown()を参照してください。

バージョン3.3の新機能:オープンファイル記述子として path を指定するためのサポート、および dir_fd および follow_symlinks 引数を追加しました。

バージョン3.6で変更: パスのようなオブジェクトをサポートします。

os.chroot(path)

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

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.fchdir(fd)
現在の作業ディレクトリを、ファイル記述子 fd で表されるディレクトリに変更します。 記述子は、開いているファイルではなく、開いているディレクトリを参照する必要があります。 Python 3.3以降、これはos.chdir(fd)と同等です。
os.getcwd()
現在の作業ディレクトリを表す文字列を返します。
os.getcwdb()

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

バージョン3.8で変更:この関数は、ANSIコードページではなく、WindowsでUTF-8エンコーディングを使用するようになりました。理由については PEP 529 を参照してください。 この関数は、Windowsでは非推奨ではなくなりました。

os.lchflags(path, flags)

path のフラグを chflags()のように数値の flags に設定しますが、シンボリックリンクには従わないでください。 Python 3.3以降、これはos.chflags(path, flags, follow_symlinks=False)と同等です。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.lchmod(path, mode)

パスのモードを数値モードに変更します。 パスがシンボリックリンクの場合、これはターゲットではなくシンボリックリンクに影響します。 mode の可能な値については、 chmod()のドキュメントを参照してください。 Python 3.3以降、これはos.chmod(path, mode, follow_symlinks=False)と同等です。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.lchown(path, uid, gid)

パスの所有者とグループIDを数値の uidgid に変更します。 この関数はシンボリックリンクをたどりません。 Python 3.3以降、これはos.chown(path, uid, gid, follow_symlinks=False)と同等です。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)

dst という名前の src を指すハードリンクを作成します。

この関数は、 src_dir_fd および/または dst_dir_fd の指定をサポートして、ディレクトリ記述子に関連するパス、およびシンボリックリンクに従わないを提供できます。

バージョン3.2で変更: Windowsサポートが追加されました。

バージョン3.3の新機能: src_dir_fddst_dir_fd 、および follow_symlinks 引数が追加されました。

バージョン3.6で変更: src および dstパスのようなオブジェクトを受け入れます。

os.listdir(path='.')

path で指定されたディレクトリ内のエントリの名前を含むリストを返します。 リストは任意の順序であり、ディレクトリに存在する場合でも、特別なエントリ'.'および'..'は含まれません。 この関数の呼び出し中にファイルがディレクトリから削除またはディレクトリに追加された場合、そのファイルの名前を含めるかどうかは指定されていません。

パスパスのようなオブジェクトである可能性があります。 path のタイプがbytesの場合( PathLike インターフェイスを介して直接的または間接的に)、返されるファイル名もタイプbytesになります。 他のすべての状況では、それらはタイプstrになります。

この関数は、ファイル記述子の指定もサポートできます。 ファイル記述子はディレクトリを参照する必要があります。

ノート

strファイル名をbytesにエンコードするには、 fsencode()を使用します。

も参照してください

scandir()関数は、ファイル属性情報とともにディレクトリエントリを返すため、多くの一般的な使用例でパフォーマンスが向上します。

バージョン3.2で変更: path パラメーターがオプションになりました。

バージョン3.3の新機能:オープンファイル記述子としてパスを指定するためのサポートが追加されました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.lstat(path, *, dir_fd=None)

指定されたパスでlstat()システムコールと同等の処理を実行します。 stat()に似ていますが、シンボリックリンクをたどりません。 stat_result オブジェクトを返します。

シンボリックリンクをサポートしないプラットフォームでは、これは stat()のエイリアスです。

Python 3.3以降、これはos.stat(path, dir_fd=dir_fd, follow_symlinks=False)と同等です。

この関数は、ディレクトリ記述子に関連するパスもサポートできます。

も参照してください

stat()関数。

バージョン3.2で変更: Windows 6.0(Vista)シンボリックリンクのサポートが追加されました。

バージョン3.3で変更: dir_fd パラメーターが追加されました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

バージョン3.8で変更: Windowsで、シンボリックリンクやディレクトリジャンクションなど、別のパス(名前の代理)を表す再解析ポイントを開くようになりました。 stat()の場合と同様に、他の種類の再解析ポイントはオペレーティングシステムによって解決されます。

os.mkdir(path, mode=0o777, *, dir_fd=None)

数値モードモードパスという名前のディレクトリを作成します。

ディレクトリがすでに存在する場合は、 FileExistsError が発生します。

一部のシステムでは、モードは無視されます。 これが使用される場合、現在のumask値が最初にマスクされます。 最後の9以外のビット(つまり モード)の8進表現の最後の3桁が設定され、その意味はプラットフォームによって異なります。 一部のプラットフォームでは、それらは無視されるため、 chmod()を明示的に呼び出して設定する必要があります。

この関数は、ディレクトリ記述子に関連するパスもサポートできます。

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

バージョン3.3の新機能: dir_fd 引数。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.makedirs(name, mode=0o777, exist_ok=False)

再帰的なディレクトリ作成機能。 mkdir()と同様ですが、リーフディレクトリを含めるために必要なすべての中間レベルのディレクトリを作成します。

mode パラメータは、リーフディレクトリを作成するために mkdir()に渡されます。 解釈方法については、 mkdir()の説明を参照してください。 新しく作成された親ディレクトリのファイルパーミッションビットを設定するには、 makedirs()を呼び出す前にumaskを設定できます。 既存の親ディレクトリのファイル許可ビットは変更されません。

exit_okFalse(デフォルト)の場合、ターゲットディレクトリがすでに存在すると、 FileExistsError が発生します。

ノート

makedirs()は、作成するパス要素に pardir が含まれている場合、混乱します(例: UNIXシステムでは「..」)。

この関数は、UNCパスを正しく処理します。

バージョン3.2の新機能: exit_ok パラメーター。

バージョン3.4.1で変更: Python 3.4.1より前では、 exit_okTrueであり、ディレクトリが存在する場合、 makedirs()は引き続き mode が既存のディレクトリのモードと一致しなかった場合、エラーが発生します。 この動作を安全に実装することは不可能だったため、Python3.4.1で削除されました。 :issue: `21082` を参照してください。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

バージョン3.7で変更: mode 引数は、新しく作成された中間レベルのディレクトリのファイル許可ビットに影響を与えなくなりました。

os.mkfifo(path, mode=0o666, *, dir_fd=None)

数値モードモードパスという名前のFIFO(名前付きパイプ)を作成します。 現在のumask値は、最初にモードからマスクアウトされます。

この関数は、ディレクトリ記述子に関連するパスもサポートできます。

FIFOは、通常のファイルのようにアクセスできるパイプです。 FIFOは、削除されるまで存在します(たとえば、 os.unlink()を使用)。 一般に、FIFOは、「クライアント」タイプと「サーバー」タイプのプロセス間のランデブーとして使用されます。サーバーは読み取り用にFIFOを開き、クライアントは書き込み用にFIFOを開きます。 mkfifo()はFIFOを開かないことに注意してください—ランデブーポイントを作成するだけです。

バージョン3.3の新機能: dir_fd 引数。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.mknod(path, mode=0o600, device=0, *, dir_fd=None)

path という名前のファイルシステムノード(ファイル、デバイス特殊ファイル、または名前付きパイプ)を作成します。 mode は、使用するアクセス許可と作成するノードのタイプの両方を指定し、stat.S_IFREGstat.S_IFCHR、 [X154Xのいずれかと組み合わせます(ビットごとのOR) ]、およびstat.S_IFIFO(これらの定数は stat で使用できます)。 stat.S_IFCHRおよびstat.S_IFBLKの場合、 device は新しく作成されたデバイス特殊ファイルを定義します(おそらく os.makedev()を使用)。それ以外の場合は無視されます。

この関数は、ディレクトリ記述子に関連するパスもサポートできます。

バージョン3.3の新機能: dir_fd 引数。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.major(device)
未加工のデバイス番号からデバイスのメジャー番号を抽出します(通常、statst_devまたはst_rdevフィールド)。
os.minor(device)
未加工のデバイス番号からデバイスのマイナー番号を抽出します(通常、statst_devまたはst_rdevフィールド)。
os.makedev(major, minor)
メジャーデバイス番号とマイナーデバイス番号から生のデバイス番号を作成します。
os.pathconf(path, name)

名前付きファイルに関連するシステム構成情報を返します。 name は、取得する構成値を指定します。 定義されたシステム値の名前である文字列である可能性があります。 これらの名前は、多くの標準(POSIX.1、Unix 95、Unix 98など)で指定されています。 一部のプラットフォームでは、追加の名前も定義されています。 ホストオペレーティングシステムに認識されている名前は、pathconf_namesディクショナリに記載されています。 そのマッピングに含まれていない構成変数の場合、 name の整数の受け渡しも受け入れられます。

name が文字列であり、不明な場合、 ValueError が発生します。 name の特定の値がホストシステムでサポートされていない場合、pathconf_namesに含まれていても、 OSErrorerrno.EINVALで発生します。エラー番号は

この関数は、ファイル記述子の指定をサポートできます。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.pathconf_names
pathconf()および fpathconf()によって受け入れられるディクショナリマッピング名を、ホストオペレーティングシステムによってそれらの名前に定義された整数値にマッピングします。 これは、システムに認識されている名前のセットを判別するために使用できます。
os.readlink(path, *, dir_fd=None)

シンボリックリンクが指すパスを表す文字列を返します。 結果は、絶対パス名または相対パス名のいずれかになります。 相対パスの場合は、os.path.join(os.path.dirname(path), result)を使用して絶対パス名に変換できます。

path が文字列オブジェクトの場合( PathLike インターフェイスを介して直接的または間接的に)、結果も文字列オブジェクトになり、呼び出しによってUnicodeDecodeErrorが発生する可能性があります。 path がバイトオブジェクト(直接または間接)の場合、結果はバイトオブジェクトになります。

この関数は、ディレクトリ記述子に関連するパスもサポートできます。

リンクを含む可能性のあるパスを解決しようとするときは、 realpath()を使用して、再帰とプラットフォームの違いを適切に処理してください。

バージョン3.2で変更: Windows 6.0(Vista)シンボリックリンクのサポートが追加されました。

バージョン3.3の新機能: dir_fd 引数。

バージョン3.6で変更: Unixでパスのようなオブジェクトを受け入れます。

バージョン3.8で変更: Windowsでパスのようなオブジェクトとバイトオブジェクトを受け入れます。

バージョン3.8で変更:ディレクトリジャンクションのサポートが追加され、以前に返されたオプションの「印刷名」フィールドではなく、置換パス(通常は\\?\プレフィックスを含む)を返すように変更されました。

os.remove(path, *, dir_fd=None)

ファイルパスを削除(削除)します。 path がディレクトリの場合、 IsADirectoryError が発生します。 rmdir()を使用してディレクトリを削除します。 ファイルが存在しない場合、 FileNotFoundError が発生します。

この関数は、ディレクトリ記述子に関連するパスをサポートできます。

Windowsでは、使用中のファイルを削除しようとすると、例外が発生します。 Unixでは、ディレクトリエントリは削除されますが、ファイルに割り当てられたストレージは、元のファイルが使用されなくなるまで使用できません。

この関数は、 unlink()と意味的に同じです。

バージョン3.3の新機能: dir_fd 引数。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.removedirs(name)

ディレクトリを再帰的に削除します。 rmdir()と同様に機能しますが、リーフディレクトリが正常に削除された場合、 removedirs()は、エラーが発生するまで path に記載されているすべての親ディレクトリを連続して削除しようとします。が発生します(通常、親ディレクトリが空ではないことを意味するため、無視されます)。 たとえば、os.removedirs('foo/bar/baz')は、最初にディレクトリ'foo/bar/baz'を削除し、次に'foo/bar''foo'が空の場合はそれらを削除します。 リーフディレクトリを正常に削除できなかった場合、 OSError が発生します。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

ファイルまたはディレクトリの名前を src から dst に変更します。 dst が存在する場合、多くの場合、操作は OSError サブクラスで失敗します。

Windowsでは、 dst が存在する場合、 FileExistsError が常に発生します。

Unixでは、 src がファイルで、 dst がディレクトリであるか、またはその逆の場合、 IsADirectoryError または NotADirectoryError が発生します。それぞれ。 両方がディレクトリであり、 dst が空の場合、 dst はサイレントに置き換えられます。 dst が空でないディレクトリの場合、 OSError が発生します。 両方がファイルの場合、 dst ユーザーが権限を持っていれば、サイレントに置き換えられます。 srcdst が異なるファイルシステム上にある場合、一部のUnixフレーバーで操作が失敗することがあります。 成功した場合、名前の変更は不可分操作になります(これはPOSIX要件です)。

この関数は、 src_dir_fd および/または dst_dir_fd の指定をサポートして、ディレクトリ記述子に関連するパスを提供できます。

宛先のクロスプラットフォームの上書きが必要な場合は、 replace()を使用してください。

バージョン3.3の新機能: src_dir_fd および dst_dir_fd 引数。

バージョン3.6で変更: src および dstパスのようなオブジェクトを受け入れます。

os.renames(old, new)

再帰的なディレクトリまたはファイルの名前変更機能。 rename()と同様に機能しますが、新しいパス名を適切にするために必要な中間ディレクトリの作成が最初に試行される点が異なります。 名前の変更後、古い名前の右端のパスセグメントに対応するディレクトリは、 removedirs()を使用して削除されます。

ノート

リーフディレクトリまたはファイルを削除するために必要な権限がない場合、この関数は新しいディレクトリ構造で失敗する可能性があります。

バージョン3.6で変更: old および newpath-likeオブジェクトを受け入れます。

os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

ファイルまたはディレクトリの名前を src から dst に変更します。 dst がディレクトリの場合、 OSError が発生します。 dst が存在し、ファイルである場合、ユーザーに権限があれば、サイレントに置き換えられます。 srcdst が異なるファイルシステム上にある場合、操作が失敗する可能性があります。 成功した場合、名前の変更は不可分操作になります(これはPOSIX要件です)。

この関数は、 src_dir_fd および/または dst_dir_fd の指定をサポートして、ディレクトリ記述子に関連するパスを提供できます。

バージョン3.3の新機能。

バージョン3.6で変更: src および dstパスのようなオブジェクトを受け入れます。

os.rmdir(path, *, dir_fd=None)

ディレクトリパスを削除(削除)します。 ディレクトリが存在しないか空でない場合、 FileNotFoundError または OSError がそれぞれ発生します。 ディレクトリツリー全体を削除するには、 shutil.rmtree()を使用できます。

この関数は、ディレクトリ記述子に関連するパスをサポートできます。

バージョン3.3の新機能: dir_fd パラメーター。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.scandir(path='.')

path で指定されたディレクトリ内のエントリに対応する os.DirEntry オブジェクトのイテレータを返します。 エントリは任意の順序で生成され、特別なエントリ'.'および'..'は含まれません。 イテレータの作成後にファイルがディレクトリから削除またはディレクトリに追加された場合、そのファイルのエントリを含めるかどうかは指定されていません。

listdir()の代わりに scandir()を使用すると、 os.DirEntry オブジェクトが公開されるため、ファイルタイプまたはファイル属性情報も必要とするコードのパフォーマンスを大幅に向上させることができます。この情報は、オペレーティングシステムがディレクトリのスキャン時に提供する場合に表示されます。 すべての os.DirEntry メソッドはシステムコールを実行できますが、 is_dir()および is_file()は通常、シンボリックリンクのシステムコールのみを必要とします。 os.DirEntry.stat()は、Unixでは常にシステムコールを必要としますが、Windowsではシンボリックリンクに1つだけ必要です。

パスパスのようなオブジェクトである可能性があります。 path のタイプがbytesの場合( PathLike インターフェイスを介して直接的または間接的に)、 name および path [のタイプ各 os.DirEntry のX146X]属性はbytesになります。 他のすべての状況では、タイプはstrになります。

この関数は、ファイル記述子の指定もサポートできます。 ファイル記述子はディレクトリを参照する必要があります。

scandir()イテレータは、コンテキストマネージャプロトコルをサポートし、次のメソッドを備えています。

scandir.close()

イテレータを閉じて、取得したリソースを解放します。

これは、イテレータが使い果たされたとき、またはガベージコレクションが行われたとき、または反復中にエラーが発生したときに自動的に呼び出されます。 ただし、明示的に呼び出すか、 with ステートメントを使用することをお勧めします。

バージョン3.6の新機能。

次の例は、 scandir()を使用して、'.'で始まらない特定のパス内のすべてのファイル(ディレクトリを除く)を表示する簡単な使用法を示しています。 entry.is_file()呼び出しは、通常、追加のシステム呼び出しを行いません。

with os.scandir(path) as it:
    for entry in it:
        if not entry.name.startswith('.') and entry.is_file():
            print(entry.name)

ノート

Unixベースのシステムでは、 scandir()はシステムの opendir()および readdir()関数を使用します。 Windowsでは、Win32 FindFirstFileW および FindNextFileW 関数を使用します。

バージョン3.5の新機能。

バージョン3.6の新機能: コンテキストマネージャープロトコルと close()メソッドのサポートが追加されました。 scandir()イテレータが使い果たされておらず、明示的に閉じられていない場合、 ResourceWarning がデストラクタで発行されます。

この関数は、パスのようなオブジェクトを受け入れます。

バージョン3.7で変更: Unixでのファイル記述子のサポートが追加されました。

class os.DirEntry

scandir()によって生成され、ディレクトリエントリのファイルパスおよびその他のファイル属性を公開するオブジェクト。

scandir()は、追加のシステムコールを行わずに、この情報を可能な限り提供します。 stat()またはlstat()システムコールが行われると、os.DirEntryオブジェクトは結果をキャッシュします。

os.DirEntryインスタンスは、長期間有効なデータ構造に格納することを目的としていません。 ファイルのメタデータが変更されていることがわかっている場合、または scandir()を呼び出してから長い時間が経過している場合は、os.stat(entry.path)を呼び出して最新の情報を取得してください。

os.DirEntryメソッドはオペレーティングシステムコールを実行できるため、 OSError も発生する可能性があります。 エラーを非常にきめ細かく制御する必要がある場合は、os.DirEntryメソッドの1つを呼び出すときに OSError をキャッチし、必要に応じて処理できます。

パスのようなオブジェクトとして直接使用できるように、os.DirEntryPathLike インターフェイスを実装しています。

os.DirEntryインスタンスの属性とメソッドは次のとおりです。

name

scandir() path 引数に関連するエントリのベースファイル名。

name 属性は、 scandir() path 引数のタイプがbytesおよび [の場合、bytesになります。 X124X]それ以外の場合。 fsdecode()を使用して、バイトファイル名をデコードします。

path

エントリのフルパス名:os.path.join(scandir_path, entry.name)と同等です。ここで、 scandir_pathscandir() path 引数です。 scandir() path 引数が絶対である場合にのみ、パスは絶対です。 scandir() path 引数がファイル記述子の場合、 path 属性は name と同じです。 ] 属性。

scandir() path 引数のタイプがbytesおよび [の場合、 path 属性はbytesになります。 X124X]それ以外の場合。 fsdecode()を使用して、バイトファイル名をデコードします。

inode()

エントリのiノード番号を返します。

結果はos.DirEntryオブジェクトにキャッシュされます。 os.stat(entry.path, follow_symlinks=False).st_inoを使用して、最新の情報を取得します。

最初のキャッシュされていない呼び出しでは、システムコールはWindowsでは必要ですが、Unixでは必要ありません。

is_dir(*, follow_symlinks=True)

このエントリがディレクトリまたはディレクトリを指すシンボリックリンクである場合は、Trueを返します。 エントリが他の種類のファイルであるかそれを指している場合、またはファイルがもう存在しない場合は、Falseを返します。

follow_symlinksFalseの場合、このエントリがディレクトリ(シンボリックリンクをたどらない)の場合にのみTrueを返します。 エントリが他の種類のファイルである場合、またはエントリがもう存在しない場合は、Falseを返します。

結果はos.DirEntryオブジェクトにキャッシュされ、 follow_symlinks TrueFalseに別々のキャッシュがあります。 os.stat()stat.S_ISDIR()と一緒に呼び出して、最新の情報を取得します。

最初のキャッシュされていない呼び出しでは、ほとんどの場合、システム呼び出しは必要ありません。 具体的には、非シンボリックリンクの場合、dirent.d_type == DT_UNKNOWNを返すネットワークファイルシステムなどの特定のUnixファイルシステムを除いて、WindowsもUnixもシステムコールを必要としません。 エントリがシンボリックリンクの場合、 follow_symlinksFalseでない限り、シンボリックリンクをたどるシステムコールが必要になります。

このメソッドは、 PermissionError などの OSError を発生させる可能性がありますが、 FileNotFoundError はキャッチされ、発生しません。

is_file(*, follow_symlinks=True)

このエントリがファイルまたはファイルを指すシンボリックリンクである場合は、Trueを返します。 エントリがディレクトリまたはその他のファイル以外のエントリであるか、それを指している場合、またはそれがもう存在しない場合は、Falseを返します。

follow_symlinksFalseの場合、このエントリがファイルである場合にのみTrueを返します(シンボリックリンクをたどらない)。 エントリがディレクトリまたはその他のファイル以外のエントリである場合、またはエントリがもう存在しない場合は、Falseを返します。

結果はos.DirEntryオブジェクトにキャッシュされます。 キャッシング、行われたシステムコール、および発生した例外は、 is_dir()のとおりです。

is_symlink()

このエントリがシンボリックリンクの場合(壊れている場合でも)、Trueを返します。 エントリがディレクトリまたは任意の種類のファイルを指している場合、またはそれがもう存在しない場合は、Falseを返します。

結果はos.DirEntryオブジェクトにキャッシュされます。 os.path.islink()を呼び出して、最新の情報を取得します。

最初のキャッシュされていない呼び出しでは、ほとんどの場合、システム呼び出しは必要ありません。 具体的には、dirent.d_type == DT_UNKNOWNを返すネットワークファイルシステムなどの特定のUnixファイルシステムを除いて、WindowsもUnixもシステムコールを必要としません。

このメソッドは、 PermissionError などの OSError を発生させる可能性がありますが、 FileNotFoundError はキャッチされ、発生しません。

stat(*, follow_symlinks=True)

このエントリの stat_result オブジェクトを返します。 このメソッドは、デフォルトでシンボリックリンクをたどります。 シンボリックリンクを統計するには、follow_symlinks=False引数を追加します。

Unixでは、このメソッドは常にシステムコールを必要とします。 Windowsでは、 follow_symlinksTrueであり、エントリが再解析ポイント(たとえば、シンボリックリンクまたはディレクトリジャンクション)である場合にのみ、システムコールが必要です。

Windowsでは、 stat_resultst_inost_dev、およびst_nlink属性は常にゼロに設定されます。 os.stat()を呼び出して、これらの属性を取得します。

結果はos.DirEntryオブジェクトにキャッシュされ、 follow_symlinks TrueFalseに別々のキャッシュがあります。 os.stat()を呼び出して、最新の情報を取得します。

os.DirEntrypathlib.Path のいくつかの属性とメソッドの間には適切な対応関係があることに注意してください。 特に、name属性は、is_dir()is_file()is_symlink()、およびstat()メソッドと同じ意味を持ちます。

バージョン3.5の新機能。

バージョン3.6で変更: PathLike インターフェースのサポートが追加されました。 Windowsでのバイトパスのサポートが追加されました。

os.stat(path, *, dir_fd=None, follow_symlinks=True)

ファイルまたはファイル記述子のステータスを取得します。 指定されたパスでstat()システムコールと同等の処理を実行します。 path は、文字列またはバイトとして( PathLike インターフェイスを介して直接的または間接的に)、または開いているファイル記述子として指定できます。 stat_result オブジェクトを返します。

この関数は通常、シンボリックリンクに従います。 シンボリックリンクを統計するには、引数follow_symlinks=Falseを追加するか、 lstat()を使用します。

この関数は、ファイル記述子の指定およびシンボリックリンクに従わないをサポートできます。

Windowsでは、follow_symlinks=Falseを渡すと、シンボリックリンクやディレクトリジャンクションを含むすべての名前サロゲート再解析ポイントの追跡が無効になります。 リンクに似ていない、またはオペレーティングシステムがたどることができない他のタイプの再解析ポイントは、直接開かれます。 複数のリンクのチェーンをたどる場合、これにより、完全なトラバーサルを妨げていた非リンクではなく、元のリンクが返される可能性があります。 この場合、最終パスの統計結果を取得するには、 os.path.realpath()関数を使用してパス名を可能な限り解決し、で lstat()を呼び出します。結果。 これは、通常の例外を発生させるぶら下がっているシンボリックリンクまたはジャンクションポイントには適用されません。

例:

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
st_mtime=1297230027, st_ctime=1297230027)
>>> statinfo.st_size
264

も参照してください

fstat()および lstat()関数。

バージョン3.3の新機能: dir_fd および follow_symlinks 引数を追加し、パスの代わりにファイル記述子を指定しました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

バージョン3.8での変更: Windowsでは、オペレーティングシステムで解決できるすべての再解析ポイントが追跡されるようになり、follow_symlinks=Falseを渡すと、すべての名前代理再解析ポイントの追跡が無効になります。 オペレーティングシステムが追跡できない再解析ポイントに到達した場合、 stat は、エラーを発生させる代わりに、follow_symlinks=Falseが指定されたかのように元のパスの情報を返すようになりました。

class os.stat_result

属性がstat構造体のメンバーにほぼ対応するオブジェクト。 os.stat()os.fstat()os.lstat()の結果に使用されます。

属性:

st_mode

ファイルモード:ファイルタイプとファイルモードビット(許可)。

st_ino

プラットフォームに依存しますが、ゼロ以外の場合は、st_devの特定の値に対してファイルを一意に識別します。 通常:

st_dev

このファイルが存在するデバイスの識別子。

st_nlink

ハードリンクの数。

st_uid

ファイル所有者のユーザーID。

st_gid

ファイル所有者のグループ識別子。

st_size

通常のファイルまたはシンボリックリンクの場合は、ファイルのサイズ(バイト単位)。 シンボリックリンクのサイズは、終了するヌルバイトを除いた、リンクに含まれるパス名の長さです。

タイムスタンプ:

st_atime

秒単位で表された最新のアクセスの時間。

st_mtime

最新のコンテンツ変更の時刻(秒単位)。

st_ctime

プラットフォームに依存:

  • Unixでの最新のメタデータ変更の時刻、

  • Windowsでの作成時間。秒単位で表されます。

st_atime_ns

整数としてナノ秒で表される最新のアクセスの時間。

st_mtime_ns

整数としてナノ秒で表される最新のコンテンツ変更の時間。

st_ctime_ns

プラットフォームに依存:

  • Unixでの最新のメタデータ変更の時刻、

  • Windowsでの作成時間。ナノ秒単位で整数として表されます。

ノート

st_atimest_mtime 、および st_ctime 属性の正確な意味と解像度は、オペレーティングシステムとファイルシステムによって異なります。 たとえば、FATまたはFAT32ファイルシステムを使用するWindowsシステムでは、 st_mtime の解像度は2秒で、 st_atime の解像度は1日のみです。 詳細については、オペレーティングシステムのドキュメントを参照してください。

同様に、 st_atime_nsst_mtime_ns 、および st_ctime_ns は常にナノ秒で表されますが、多くのシステムはナノ秒の精度を提供しません。 ナノ秒の精度を提供するシステムでは、 st_atimest_mtime 、および st_ctime を格納するために使用される浮動小数点オブジェクトは、すべてを保持できません。少し不正確になります。 正確なタイムスタンプが必要な場合は、常に st_atime_nsst_mtime_ns 、および st_ctime_ns を使用する必要があります。

一部のUnixシステム(Linuxなど)では、次の属性も使用できる場合があります。

st_blocks

ファイルに割り当てられた512バイトのブロックの数。 ファイルに穴がある場合、これは st_size / 512よりも小さい場合があります。

st_blksize

効率的なファイルシステムI / Oのための「推奨」ブロックサイズ。 小さなチャンクでファイルに書き込むと、読み取り、変更、再書き込みが非効率的になる可能性があります。

st_rdev

iノードデバイスの場合のデバイスのタイプ。

st_flags

ファイルのユーザー定義フラグ。

他のUnixシステム(FreeBSDなど)では、次の属性を使用できる場合があります(ただし、rootがそれらを使用しようとした場合にのみ入力できます)。

st_gen

ファイルの世代番号。

st_birthtime

ファイル作成の時間。

Solarisおよびその派生物では、次の属性も使用できる場合があります。

st_fstype

ファイルを含むファイルシステムのタイプを一意に識別する文字列。

macOSシステムでは、次の属性も使用できる場合があります。

st_rsize

ファイルの実際のサイズ。

st_creator

ファイルの作成者。

st_type

ファイルタイプ。

Windowsシステムでは、次の属性も使用できます。

st_file_attributes

Windowsファイル属性:GetFileInformationByHandle()によって返されるBY_HANDLE_FILE_INFORMATION構造のdwFileAttributesメンバー。 stat モジュールのFILE_ATTRIBUTE_*定数を参照してください。

st_reparse_tag

st_file_attributesFILE_ATTRIBUTE_REPARSE_POINTが設定されている場合、このフィールドには再解析ポイントのタイプを識別するタグが含まれます。 stat モジュールのIO_REPARSE_TAG_*定数を参照してください。

標準モジュール stat は、stat構造から情報を抽出するのに役立つ関数と定数を定義します。 (Windowsでは、一部の項目はダミー値で埋められます。)

下位互換性のために、 stat_result インスタンスは、stat構造体の最も重要な(そして移植可能な)メンバーを st_modeの順序で与える少なくとも10個の整数のタプルとしてもアクセスできます。st_inost_devst_nlinkst_uidst_gid 、 st_size [X320X ]、 st_atimest_mtimest_ctime 。 一部の実装では、最後にさらに項目が追加される場合があります。 古いPythonバージョンとの互換性のために、 stat_result にタプルとしてアクセスすると、常に整数が返されます。

バージョン3.3の新機能: st_atime_nsst_mtime_ns 、および st_ctime_ns メンバーを追加しました。

バージョン3.5の新機能: Windowsに st_file_attributes メンバーを追加しました。

バージョン3.5での変更: Windowsは、使用可能な場合、ファイルインデックスを st_ino として返すようになりました。

バージョン3.7の新機能: Solaris / derivativesに st_fstype メンバーを追加しました。

バージョン3.8の新機能: Windowsに st_reparse_tag メンバーを追加しました。

バージョン3.8での変更: Windowsでは、 st_mode メンバーは、特別なファイルをS_IFCHRS_IFIFO、またはS_IFBLKとして適切に識別するようになりました。 。

os.statvfs(path)

指定されたパスでstatvfs()システムコールを実行します。 戻り値は、属性が指定されたパス上のファイルシステムを記述し、statvfs構造のメンバー、つまりf_bsizef_frsizef_blocksf_bfreef_bavailf_filesf_ffreef_favailf_flag、 [ X262X]、f_fsid

f_flag属性のビットフラグには、2つのモジュールレベルの定数が定義されています。ST_RDONLYが設定されている場合、ファイルシステムは読み取り専用でマウントされ、ST_NOSUIDが設定されている場合、 setuid / setgidビットのセマンティクスは無効になっているか、サポートされていません。

追加のモジュールレベルの定数は、GNU / glibcベースのシステム用に定義されています。 これらは、ST_NODEV(デバイス特殊ファイルへのアクセスを禁止)、ST_NOEXEC(プログラムの実行を禁止)、ST_SYNCHRONOUS(書き込みは一度に同期されます)、ST_MANDLOCK( FSで必須ロックを許可する)、ST_WRITE(ファイル/ディレクトリ/シンボリックリンクに書き込む)、ST_APPEND(追加専用ファイル)、ST_IMMUTABLE(不変ファイル)、[X289X ] (アクセス時間を更新しない)、ST_NODIRATIME(ディレクトリアクセス時間を更新しない)、ST_RELATIME(mtime / ctimeに対してatimeを更新)。

この関数は、ファイル記述子の指定をサポートできます。

バージョン3.2で変更: ST_RDONLYおよびST_NOSUID定数が追加されました。

バージョン3.3の新機能:オープンファイル記述子としてパスを指定するためのサポートが追加されました。

バージョン3.4で変更: ST_NODEVST_NOEXECST_SYNCHRONOUSST_MANDLOCKST_WRITEST_APPENDST_IMMUTABLEST_NOATIMEST_NODIRATIME、およびST_RELATIME定数が追加されました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

バージョン3.7の新機能: f_fsidを追加しました。

os.supports_dir_fd

os モジュールのどの関数が dir_fd パラメーターのオープンファイル記述子を受け入れるかを示す set オブジェクト。 プラットフォームが異なれば提供される機能も異なり、Pythonが dir_fd パラメーターを実装するために使用する基本的な機能は、Pythonがサポートするすべてのプラットフォームで利用できるわけではありません。 一貫性を保つために、 dir_fd をサポートする関数は常にパラメーターの指定を許可しますが、ローカルで使用できないときに機能を使用すると例外がスローされます。 ( dir_fdNoneを指定することは、すべてのプラットフォームで常にサポートされています。)

特定の関数が dir_fd パラメーターのオープンファイル記述子を受け入れるかどうかを確認するには、supports_dir_fdin演算子を使用します。 例として、 os.stat()がローカルプラットフォームで dir_fd のオープンファイル記述子を受け入れる場合、この式はTrueと評価されます。

os.stat in os.supports_dir_fd

現在、 dir_fd パラメーターはUnixプラットフォームでのみ機能します。 それらのどれもWindowsで動作しません。

バージョン3.3の新機能。

os.supports_effective_ids

set オブジェクトは、 os.access()がローカルプラットフォームの effective_ids パラメーターにTrueを指定できるかどうかを示します。 ( effective_idsFalseを指定することは、すべてのプラットフォームで常にサポートされます。)ローカルプラットフォームがそれをサポートする場合、コレクションには os.access()が含まれます。 それ以外の場合は空になります。

os.access()がローカルプラットフォームでeffective_ids=Trueをサポートしている場合、この式はTrueと評価されます。

os.access in os.supports_effective_ids

現在、 effective_ids はUnixプラットフォームでのみサポートされています。 Windowsでは動作しません。

バージョン3.3の新機能。

os.supports_fd

os モジュールのどの関数がローカルプラットフォームで開いているファイル記述子として path パラメーターを指定できるかを示す set オブジェクト。 プラットフォームが異なれば提供される機能も異なり、Pythonが path 引数として開いているファイル記述子を受け入れるために使用する基本的な機能は、Pythonがサポートするすべてのプラットフォームで利用できるわけではありません。

特定の関数がその path パラメーターにオープンファイル記述子を指定できるかどうかを判断するには、supports_fdin演算子を使用します。 例として、 os.chdir()がローカルプラットフォームで path のオープンファイル記述子を受け入れる場合、この式はTrueと評価されます。

os.chdir in os.supports_fd

バージョン3.3の新機能。

os.supports_follow_symlinks

os モジュールのどの関数がローカルプラットフォームの follow_symlinks パラメーターにFalseを受け入れるかを示す set オブジェクト。 プラットフォームが異なれば提供される機能も異なり、Pythonが follow_symlinks を実装するために使用する基本的な機能は、Pythonがサポートするすべてのプラットフォームで利用できるわけではありません。 一貫性を保つために、 follow_symlinks をサポートする関数は常にパラメーターの指定を許可しますが、ローカルで使用できないときに機能を使用すると例外がスローされます。 ( follow_symlinksTrueを指定することは、すべてのプラットフォームで常にサポートされています。)

特定の関数が follow_symlinks パラメーターにFalseを受け入れるかどうかを確認するには、supports_follow_symlinksin演算子を使用します。 例として、ローカルプラットフォームで os.stat()を呼び出すときにfollow_symlinks=Falseを指定すると、この式はTrueと評価されます。

os.stat in os.supports_follow_symlinks

バージョン3.3の新機能。

os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)

dst という名前の src を指すシンボリックリンクを作成します。

Windowsでは、シンボリックリンクはファイルまたはディレクトリのいずれかを表し、ターゲットに動的にモーフィングしません。 ターゲットが存在する場合、シンボリックリンクのタイプは一致するように作成されます。 それ以外の場合、 target_is_directoryTrueの場合はシンボリックリンクがディレクトリとして作成され、それ以外の場合はファイルシンボリックリンク(デフォルト)が作成されます。 Windows以外のプラットフォームでは、 target_is_directory は無視されます。

この関数は、ディレクトリ記述子に関連するパスをサポートできます。

ノート

新しいバージョンのWindows10では、開発者モードが有効になっている場合、非特権アカウントがシンボリックリンクを作成できます。 開発者モードが使用できない/有効になっていない場合は、 SeCreateSymbolicLinkPrivilege 特権が必要です。または、プロセスを管理者として実行する必要があります。

OSError は、特権のないユーザーが関数を呼び出すと発生します。

バージョン3.2で変更: Windows 6.0(Vista)シンボリックリンクのサポートが追加されました。

バージョン3.3の新機能: dir_fd 引数が追加され、Windows以外のプラットフォームで target_is_directory が許可されるようになりました。

バージョン3.6で変更: src および dstパスのようなオブジェクトを受け入れます。

バージョン3.8で変更:開発者モードのWindowsでの昇格されていないシンボリックリンクのサポートが追加されました。

os.sync()

すべてをディスクに強制的に書き込みます。

バージョン3.3の新機能。

os.truncate(path, length)

パスに対応するファイルを切り捨てて、サイズが最大長さバイトになるようにします。

この関数は、ファイル記述子の指定をサポートできます。

バージョン3.3の新機能。

バージョン3.5で変更: Windowsのサポートが追加されました

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.unlink(path, *, dir_fd=None)

ファイルパスを削除(削除)します。 この関数は、 remove()と意味的に同じです。 unlinkの名前は、その従来のUnix名です。 詳細については、 remove()のドキュメントを参照してください。

バージョン3.3の新機能: dir_fd パラメーター。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)

パスで指定したファイルのアクセス時間と変更時間を設定します。

utime()は、 timesns の2つのオプションパラメーターを取ります。 これらはパスに設定された時間を指定し、次のように使用されます。

  • ns を指定する場合は、(atime_ns, mtime_ns)の形式の2タプルである必要があります。ここで、各メンバーはナノ秒を表す整数です。

  • timesNoneでない場合は、(atime, mtime)の形式の2タプルである必要があります。各メンバーは、秒を表すintまたはfloatです。

  • timesNoneで、 ns が指定されていない場合、これはns=(atime_ns, mtime_ns)を指定することと同じです。

timesns の両方にタプルを指定するとエラーになります。

ここで設定した正確な時刻は、オペレーティングシステムがアクセス時刻と変更時刻を記録する解像度によっては、後続の stat()呼び出しによって返されない場合があることに注意してください。 stat()を参照してください。 正確な時刻を保持する最良の方法は、 os.stat()結果オブジェクトの st_atime_ns フィールドと st_mtime_ns フィールドを ns で使用することです。 ]パラメータを utime に設定します。

この関数は、ファイル記述子の指定ディレクトリ記述子に関連するパス、およびシンボリックリンクに従わないをサポートできます。

バージョン3.3の新機能:オープンファイル記述子として path を指定するためのサポート、および dir_fdfollow_symlinks 、およびを追加しました。 ns パラメータ。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

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

ツリーをトップダウンまたはボトムアップでウォークして、ディレクトリツリーにファイル名を生成します。 ディレクトリ toptop 自体を含む)をルートとするツリー内のディレクトリごとに、3タプル(dirpath, dirnames, filenames)が生成されます。

dirpath は文字列であり、ディレクトリへのパスです。 dirnames は、 dirpath 内のサブディレクトリの名前のリストです('.''..'を除く)。 filenames は、 dirpath 内の非ディレクトリファイルの名前のリストです。 リスト内の名前にはパスコンポーネントが含まれていないことに注意してください。 dirpath 内のファイルまたはディレクトリへのフルパス( top で始まる)を取得するには、os.path.join(dirpath, name)を実行します。 リストがソートされるかどうかは、ファイルシステムによって異なります。 リストの生成中にファイルが dirpath ディレクトリから削除または追加された場合、そのファイルの名前を含めるかどうかは指定されていません。

オプションの引数 topdownTrueであるか指定されていない場合、ディレクトリのトリプルは、そのサブディレクトリのトリプルの前に生成されます(ディレクトリはトップダウンで生成されます)。 topdownFalseの場合、ディレクトリのトリプルは、そのすべてのサブディレクトリのトリプルの後に生成されます(ディレクトリはボトムアップで生成されます)。 topdown の値に関係なく、サブディレクトリのリストは、ディレクトリとそのサブディレクトリのタプルが生成される前に取得されます。

topdownTrueの場合、呼び出し元は dirnames リストをインプレースで(おそらく del またはスライス割り当てを使用して)変更でき、[X148X ] walk()は、名前が dirnames に残っているサブディレクトリにのみ再帰します。 これを使用して、検索を削除したり、特定の訪問順序を課したり、呼び出し元が walk()を再開する前に、呼び出し元が作成または名前変更したディレクトリについて walk()に通知したりすることもできます。 topdownFalseのときに dirnames を変更しても、ウォークの動作には影響しません。ボトムアップモードでは、 dirnames のディレクトリが dirpath 自体が生成される前に生成されます。

デフォルトでは、 scandir()呼び出しからのエラーは無視されます。 オプションの引数 onerror が指定されている場合、それは関数である必要があります。 OSError インスタンスという1つの引数で呼び出されます。 エラーを報告してウォークを続行するか、例外を発生させてウォークを中止することができます。 ファイル名は、例外オブジェクトのfilename属性として使用できることに注意してください。

デフォルトでは、 walk()は、ディレクトリに解決されるシンボリックリンクに移動しません。 followlinksTrueに設定して、シンボリックリンクをサポートするシステムで、シンボリックリンクが指すディレクトリにアクセスします。

ノート

followlinksTrueに設定すると、リンクがそれ自体の親ディレクトリを指している場合、無限再帰が発生する可能性があることに注意してください。 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", end=" ")
    print(sum(getsize(join(root, name)) for name in files), end=" ")
    print("bytes in", len(files), "non-directory files")
    if 'CVS' in dirs:
        dirs.remove('CVS')  # don't visit CVS directories

次の例( shutil.rmtree()の単純な実装)では、ツリーをボトムアップで歩くことが不可欠です。 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))

バージョン3.5で変更:この関数は os.listdir()ではなく os.scandir()を呼び出すようになり、 os.stat()

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)

これは、 walk()とまったく同じように動作しますが、4タプル(dirpath, dirnames, filenames, dirfd)を生成し、dir_fdをサポートする点が異なります。

dirpathdirnamesfilenames は、 walk()出力と同じであり、 dirfd は参照するファイル記述子です。ディレクトリ dirpath に移動します。

この関数は、ディレクトリ記述子およびシンボリックリンクに従わないに関連するパスを常にサポートします。 ただし、他の関数とは異なり、 follow_symlinksfwalk()のデフォルト値はFalseであることに注意してください。

ノート

fwalk()はファイル記述子を生成するため、それらは次の反復ステップまでのみ有効であるため、複製する必要があります(例: それらをより長く保持したい場合は、 dup())を使用します。

この例では、CVSサブディレクトリの下を検索しないことを除いて、開始ディレクトリの下の各ディレクトリでディレクトリ以外のファイルが使用したバイト数を表示します。

import os
for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
    print(root, "consumes", end="")
    print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
          end="")
    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, rootfd in os.fwalk(top, topdown=False):
    for name in files:
        os.unlink(name, dir_fd=rootfd)
    for name in dirs:
        os.rmdir(name, dir_fd=rootfd)

バージョン3.3の新機能。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

バージョン3.7で変更: バイトパスのサポートが追加されました。

os.memfd_create(name[, flags=os.MFD_CLOEXEC])

匿名ファイルを作成し、それを参照するファイル記述子を返します。 flags は、システムで使用可能なos.MFD_*定数の1つ(またはビット単位のOR演算の組み合わせ)である必要があります。 デフォルトでは、新しいファイル記述子は継承不可です。

name で指定された名前はファイル名として使用され、ディレクトリ/proc/self/fd/内の対応するシンボリックリンクのターゲットとして表示されます。 表示される名前の接頭辞は常にmemfd:であり、デバッグ目的でのみ使用されます。 名前はファイル記述子の動作に影響を与えないため、複数のファイルが副作用なしに同じ名前を持つことができます。

バージョン3.8の新機能。

os.MFD_CLOEXEC
os.MFD_ALLOW_SEALING
os.MFD_HUGETLB
os.MFD_HUGE_SHIFT
os.MFD_HUGE_MASK
os.MFD_HUGE_64KB
os.MFD_HUGE_512KB
os.MFD_HUGE_1MB
os.MFD_HUGE_2MB
os.MFD_HUGE_8MB
os.MFD_HUGE_16MB
os.MFD_HUGE_32MB
os.MFD_HUGE_256MB
os.MFD_HUGE_512MB
os.MFD_HUGE_1GB
os.MFD_HUGE_2GB
os.MFD_HUGE_16GB

これらのフラグは、 memfd_create()に渡すことができます。

バージョン3.8の新機能。

Linux拡張属性

バージョン3.3の新機能。


これらの機能はすべてLinuxでのみ使用できます。

os.getxattr(path, attribute, *, follow_symlinks=True)

パスの拡張ファイルシステム属性属性の値を返します。 attribute は、bytesまたはstr( PathLike インターフェースを介して直接的または間接的に)にすることができます。 strの場合は、ファイルシステムエンコーディングでエンコードされます。

この関数は、ファイル記述子の指定およびシンボリックリンクに従わないをサポートできます。

バージョン3.6で変更: path および attributepath-likeオブジェクトを受け入れます。

os.listxattr(path=None, *, follow_symlinks=True)

パスの拡張ファイルシステム属性のリストを返します。 リスト内の属性は、ファイルシステムエンコーディングでデコードされた文字列として表されます。 pathNoneの場合、 listxattr()は現在のディレクトリを調べます。

この関数は、ファイル記述子の指定およびシンボリックリンクに従わないをサポートできます。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.removexattr(path, attribute, *, follow_symlinks=True)

拡張ファイルシステム属性属性パスから削除します。 attribute はbytesまたはstrである必要があります( PathLike インターフェースを介して直接的または間接的に)。 文字列の場合は、ファイルシステムエンコーディングでエンコードされます。

この関数は、ファイル記述子の指定およびシンボリックリンクに従わないをサポートできます。

バージョン3.6で変更: path および attributepath-likeオブジェクトを受け入れます。

os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)

パスの拡張ファイルシステム属性属性に設定します。 attribute は、NULが埋め込まれていないバイトまたはstrである必要があります( PathLike インターフェイスを介して直接的または間接的に)。 strの場合は、ファイルシステムエンコーディングでエンコードされます。 フラグは、 XATTR_REPLACE または XATTR_CREATE の場合があります。 XATTR_REPLACE が指定されていて、属性が存在しない場合、ENODATAが発生します。 XATTR_CREATE が指定されていて、属性がすでに存在する場合、属性は作成されず、EEXISTSが発生します。

この関数は、ファイル記述子の指定およびシンボリックリンクに従わないをサポートできます。

ノート

2.6.39未満のLinuxカーネルバージョンのバグにより、一部のファイルシステムでflags引数が無視されていました。

バージョン3.6で変更: path および attributepath-likeオブジェクトを受け入れます。

os.XATTR_SIZE_MAX
拡張属性の値の最大サイズは次のとおりです。 現在、これはLinuxでは64KiBです。
os.XATTR_CREATE
これは、 setxattr()のflags引数の可能な値です。 これは、操作で属性を作成する必要があることを示しています。
os.XATTR_REPLACE
これは、 setxattr()のflags引数の可能な値です。 これは、操作で既存の属性を置き換える必要があることを示しています。


プロセス管理

これらの関数は、プロセスを作成および管理するために使用できます。

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

os.abort()
現在のプロセスへのSIGABRTシグナルを生成します。 Unixでは、デフォルトの動作はコアダンプを生成することです。 Windowsでは、プロセスはすぐに3の終了コードを返します。 この関数を呼び出しても、 signal.signal()SIGABRTに登録されているPythonシグナルハンドラーは呼び出されないことに注意してください。
os.add_dll_directory(path)

DLL検索パスにパスを追加します。

この検索パスは、インポートされた拡張モジュールの依存関係を解決するときに使用され(モジュール自体は、sys.pathを介して解決されます)、 ctypes によっても使用されます。

返されたオブジェクトで close()を呼び出すか、 with ステートメントで使用して、ディレクトリを削除します。

DLLのロード方法の詳細については、 Microsoftのドキュメントを参照してください。

バージョン3.8の新機能:以前のバージョンのCPythonは、現在のプロセスのデフォルトの動作を使用してDLLを解決していました。 これにより、 PATHまたは現在の作業ディレクトリを検索することがあるなどの不整合が発生し、AddDllDirectoryなどのOS機能が効果を発揮しませんでした。

3.8では、DLLがロードされる2つの主要な方法が、一貫性を確保するためにプロセス全体の動作を明示的にオーバーライドするようになりました。 ライブラリの更新については、移植ノートを参照してください。

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 例外として報告されます。

現在のプロセスはすぐに置き換えられます。 開いているファイルオブジェクトと記述子はフラッシュされないため、これらの開いているファイルにデータがバッファリングされている可能性がある場合は、を呼び出す前にsys.stdout.flush()または os.fsync()を使用してフラッシュする必要があります。 exec * 関数。

exec * 関数の「l」と「v」のバリアントは、コマンドライン引数の受け渡し方法が異なります。 「l」バリアントは、コードの記述時にパラメーターの数が固定されている場合、おそらく最も簡単に操作できます。 個々のパラメーターは、単にexecl*()関数への追加パラメーターになります。 「v」バリアントは、パラメーターの数が可変で、引数が args パラメーターとしてリストまたはタプルで渡される場合に適しています。 いずれの場合も、子プロセスへの引数は、実行されているコマンドの名前で開始する必要がありますが、これは強制されません。

末尾に「p」を含むバリアント( execlp()execlpe()execvp()、および execvpe()[ X122X])は、 PATH環境変数を使用して、プログラムファイルを検索します。 環境が置き換えられるとき(次の段落で説明する exec * e バリアントの1つを使用)、新しい環境が [X179Xのソースとして使用されます。 ] 変数。 他のバリアント、 execute()execute()execv()、および execve()は、[実行可能ファイルを見つけるためのX123X] PATH変数。 パスには、適切な絶対パスまたは相対パスが含まれている必要があります。

execle()execute()execve()、および execvpe()の場合(これらはすべて「e」で終わることに注意してください) 」)、 env パラメーターは、新しいプロセスの環境変数を定義するために使用されるマッピングである必要があります(これらは現在のプロセスの環境の代わりに使用されます)。 関数 execl()execlp()execv()、および execvp()はすべて、新しいプロセスに現在のプロセスの環境。

一部のプラットフォームの execve()の場合、 path をオープンファイル記述子として指定することもできます。 この機能は、ご使用のプラットフォームではサポートされていない可能性があります。 os.supports_fd を使用して利用可能かどうかを確認できます。 使用できない場合は、使用すると NotImplementedError が発生します。

バージョン3.3の新機能: execve()のオープンファイル記述子として path を指定するためのサポートが追加されました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os._exit(n)

クリーンアップハンドラーを呼び出したり、stdioバッファーをフラッシュしたりせずに、ステータス n でプロセスを終了します。

ノート

終了する標準的な方法はsys.exit(n)です。 _exit()は通常、 fork()の後の子プロセスでのみ使用する必要があります。

以下の終了コードが定義されており、 _exit()で使用できますが、必須ではありません。 これらは通常、メールサーバーの外部コマンド配信プログラムなど、Pythonで記述されたシステムプログラムに使用されます。

ノート

いくつかのバリエーションがあるため、これらの一部はすべてのUnixプラットフォームで使用できるとは限りません。 これらの定数は、基盤となるプラットフォームによって定義される場所で定義されます。


os.EX_OK
エラーが発生しなかったことを意味する終了コード。
os.EX_USAGE
間違った数の引数が指定された場合など、コマンドが誤って使用されたことを意味する終了コード。
os.EX_DATAERR
入力データが正しくないことを意味する終了コード。
os.EX_NOINPUT
入力ファイルが存在しないか、読み取り可能ではなかったことを意味する終了コード。
os.EX_NOUSER
指定されたユーザーが存在しなかったことを意味する終了コード。
os.EX_NOHOST
指定されたホストが存在しなかったことを意味する終了コード。
os.EX_UNAVAILABLE
必要なサービスが利用できないことを意味する終了コード。
os.EX_SOFTWARE
内部ソフトウェアエラーが検出されたことを意味する終了コード。
os.EX_OSERR
パイプをフォークまたは作成できないなど、オペレーティングシステムエラーが検出されたことを意味する終了コード。
os.EX_OSFILE
一部のシステムファイルが存在しなかったか、開くことができなかったか、またはその他の種類のエラーが発生したことを意味する終了コード。
os.EX_CANTCREAT
ユーザー指定の出力ファイルを作成できなかったことを意味する終了コード。
os.EX_IOERR
一部のファイルでI / Oの実行中にエラーが発生したことを意味する終了コード。
os.EX_TEMPFAIL
一時的な障害が発生したことを意味する終了コード。 これは、再試行可能な操作中にネットワーク接続を確立できなかったなど、実際にはエラーではない可能性があることを示しています。
os.EX_PROTOCOL
プロトコル交換が違法、無効、または理解されていないことを意味する終了コード。
os.EX_NOPERM
操作を実行するための十分な権限がなかったことを意味する終了コード(ただし、ファイルシステムの問題を対象としていません)。
os.EX_CONFIG
何らかの構成エラーが発生したことを意味する終了コード。
os.EX_NOTFOUND
「エントリが見つかりませんでした」などの意味の終了コード。
os.fork()

子プロセスをforkします。 子に0を返し、親に子のプロセスIDを返します。 エラーが発生した場合、 OSError が発生します。

FreeBSD <= 6.3やCygwinを含む一部のプラットフォームでは、使用時に既知の問題があることに注意してください。fork() スレッドから。

バージョン3.8で変更:サブインタープリターでのfork()の呼び出しはサポートされなくなりました( RuntimeError が発生します)。

警告

fork()でSSLモジュールを使用するアプリケーションについては、 ssl を参照してください。

os.forkpty()

新しい疑似端末を子の制御端末として使用して、子プロセスをforkします。 (pid, fd)のペアを返します。ここで、 pid は子の0、新しい子のプロセスIDは親、 fd はファイルです。疑似端末のマスターエンドの記述子。 より移植性の高いアプローチについては、 pty モジュールを使用してください。 エラーが発生した場合、 OSError が発生します。

バージョン3.8で変更:サブインタープリターでのforkpty()の呼び出しはサポートされなくなりました( RuntimeError が発生します)。

os.kill(pid, sig)

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

Windows: signal.CTRL_C_EVENT および signal.CTRL_BREAK_EVENT シグナルは、いくつかのサブプロセスなど、共通のコンソールウィンドウを共有するコンソールプロセスにのみ送信できる特別なシグナルです。 sig の他の値を指定すると、TerminateProcess APIによってプロセスが無条件に強制終了され、終了コードが sig に設定されます。 Windows版の kill()は、プロセスハンドルを追加で強制終了します。

signal.pthread_kill()も参照してください。

バージョン3.2の新機能: Windowsのサポート。

os.killpg(pgid, sig)
シグナル sig をプロセスグループ pgid に送信します。
os.nice(increment)
プロセスの「素晴らしさ」に increment を追加します。 新しい優しさを返します。
os.pidfd_open(pid, flags=0)

プロセス pid を参照するファイル記述子を返します。 この記述子を使用して、競合やシグナルなしでプロセス管理を実行できます。 flags 引数は、将来の拡張のために提供されています。 現在、フラグ値は定義されていません。

詳細については、 pidfd_open(2)のマニュアルページを参照してください。

バージョン3.9の新機能。

os.plock(op)
プログラムセグメントをメモリにロックします。 op<sys/lock.h>で定義)の値によって、ロックされるセグメントが決まります。
os.popen(cmd, mode='r', buffering=- 1)

コマンド cmd との間のパイプを開きます。 戻り値はパイプに接続されたオープンファイルオブジェクトであり、モード'r'(デフォルト)または'w'のどちらであるかに応じて読み取りまたは書き込みが可能です。 buffering 引数は、組み込みの open()関数に対応する引数と同じ意味を持ちます。 返されたファイルオブジェクトは、バイトではなくテキスト文字列を読み書きします。

closeメソッドは、サブプロセスが正常に終了した場合は None を返し、エラーが発生した場合はサブプロセスの戻りコードを返します。 POSIXシステムでは、戻りコードが正の場合、それは1バイト左シフトされたプロセスの戻り値を表します。 戻りコードが負の場合、プロセスは、戻りコードの否定値によって与えられたシグナルによって終了しました。 (たとえば、サブプロセスが強制終了された場合、戻り値は- signal.SIGKILLになる可能性があります。)Windowsシステムでは、戻り値には子プロセスからの符号付き整数の戻りコードが含まれます。

Unixでは、 waitstatus_to_exitcode()を使用して、closeメソッドの結果(終了ステータス)がNoneでない場合、終了コードに変換できます。 Windowsでは、closeメソッドの結果は直接終了コード(またはNone)になります。

これは、 subprocess.Popen を使用して実装されます。 サブプロセスを管理および通信するためのより強力な方法については、そのクラスのドキュメントを参照してください。

os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

Pythonから使用するためにposix_spawn() CライブラリAPIをラップします。

ほとんどのユーザーは、 posix_spawn()の代わりに subprocess.run()を使用する必要があります。

位置のみの引数 pathargs 、および env は、 execve()に似ています。

path パラメーターは、実行可能ファイルへのパスです。 パスにはディレクトリが含まれている必要があります。 posix_spawnp()を使用して、ディレクトリなしで実行可能ファイルを渡します。

file_actions 引数は、Cライブラリ実装のfork()ステップとexec()ステップの間の子プロセスで特定のファイル記述子に対して実行するアクションを記述するタプルのシーケンスである場合があります。 各タプルの最初の項目は、残りのタプル要素を説明する以下の3つのタイプインジケーターのいずれかである必要があります。

os.POSIX_SPAWN_OPEN

os.POSIX_SPAWN_OPENfdパスフラグモード

os.dup2(os.open(path, flags, mode), fd)を実行します。

os.POSIX_SPAWN_CLOSE

os.POSIX_SPAWN_CLOSEfd

os.close(fd)を実行します。

os.POSIX_SPAWN_DUP2

os.POSIX_SPAWN_DUP2fdnew_fd

os.dup2(fd, new_fd)を実行します。

これらのタプルは、posix_spawn()呼び出し自体の準備に使用されるCライブラリposix_spawn_file_actions_addopen()posix_spawn_file_actions_addclose()、およびposix_spawn_file_actions_adddup2() API呼び出しに対応します。

setpgroup 引数は、子のプロセスグループを指定された値に設定します。 指定された値が0の場合、子のプロセスグループIDはそのプロセスIDと同じになります。 setpgroup の値が設定されていない場合、子は親のプロセスグループIDを継承します。 この引数は、CライブラリPOSIX_SPAWN_SETPGROUPフラグに対応します。

resetids 引数がTrueの場合、子の有効なUIDとGIDを親プロセスの実際のUIDとGIDにリセットします。 引数がFalseの場合、子は親の有効なUIDとGIDを保持します。 いずれの場合も、実行可能ファイルでset-user-IDおよびset-group-ID許可ビットが有効になっていると、それらの効果によって、有効なUIDおよびGIDの設定が上書きされます。 この引数は、CライブラリPOSIX_SPAWN_RESETIDSフラグに対応します。

setsid 引数がTrueの場合、 posix_spawn の新しいセッションIDが作成されます。 setsid にはPOSIX_SPAWN_SETSIDまたはPOSIX_SPAWN_SETSID_NPフラグが必要です。 それ以外の場合は、 NotImplementedError が発生します。

setsigmask 引数は、信号マスクを指定された信号セットに設定します。 パラメータが使用されていない場合、子は親のシグナルマスクを継承します。 この引数は、CライブラリPOSIX_SPAWN_SETSIGMASKフラグに対応します。

sigdef 引数は、指定されたセット内のすべての信号の処理をリセットします。 この引数は、CライブラリPOSIX_SPAWN_SETSIGDEFフラグに対応します。

scheduler 引数は、(オプションの)スケジューラーポリシーと、スケジューラーパラメーターを持つ sched_param のインスタンスを含むタプルである必要があります。 スケジューラポリシーの代わりにNoneの値は、が提供されていないことを示します。 この引数は、CライブラリのPOSIX_SPAWN_SETSCHEDPARAMフラグとPOSIX_SPAWN_SETSCHEDULERフラグの組み合わせです。

バージョン3.8の新機能。

os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

Pythonから使用するためにposix_spawnp() CライブラリAPIをラップします。

posix_spawn()と同様ですが、システムが PATH環境変数( execvp(3)と同じ方法)。

バージョン3.8の新機能。

os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)

os.fork()または同様のプロセスクローンAPIを使用して、新しい子プロセスがフォークされたときに実行される呼び出し可能オブジェクトを登録します。 パラメータはオプションであり、キーワードのみです。 それぞれが異なるコールポイントを指定します。

  • before は、子プロセスをフォークする前に呼び出される関数です。

  • after_in_parent は、子プロセスをforkした後に親プロセスから呼び出される関数です。

  • after_in_child は、子プロセスから呼び出される関数です。

これらの呼び出しは、制御がPythonインタープリターに戻ることが期待される場合にのみ行われます。 通常のサブプロセスの起動では、子がインタープリターに再入らないため、トリガーされません。

フォークする前に実行のために登録された関数は、逆の登録順序で呼び出されます。 (親または子のいずれかで)fork後に実行するために登録された関数は、登録順に呼び出されます。

サードパーティのCコードによるfork()呼び出しは、 PyOS_BeforeFork()PyOS_AfterFork_Parent()、および PyOS_AfterFork_Childを明示的に呼び出さない限り、これらの関数を呼び出さない場合があることに注意してください。 ()

関数の登録を解除する方法はありません。

バージョン3.7の新機能。

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 を実行します。

サブプロセスモジュールは、新しいプロセスを生成してその結果を取得するためのより強力な機能を提供することに注意してください。これらの関数を使用するよりも、そのモジュールを使用することをお勧めします。 特に古い機能のサブプロセスモジュールセクションへの置き換えを確認してください。)

modeP_NOWAIT の場合、この関数は新しいプロセスのプロセスIDを返します。 modeP_WAIT の場合、プロセスが正常に終了した場合はプロセスの終了コードを返します。-signalの場合、 signal はプロセスを強制終了したシグナルです。 。 Windowsでは、プロセスIDは実際にはプロセスハンドルになるため、 waitpid()関数で使用できます。

VxWorksに関する注意点として、この関数は、新しいプロセスが強制終了されたときに-signalを返しません。 代わりに、OSError例外が発生します。

spawn * 関数の「l」と「v」のバリアントは、コマンドライン引数の受け渡し方法が異なります。 「l」バリアントは、コードの記述時にパラメーターの数が固定されている場合、おそらく最も簡単に操作できます。 個々のパラメーターは、単にspawnl*()関数への追加パラメーターになります。 「v」バリアントは、パラメーターの数が可変で、引数が args パラメーターとしてリストまたはタプルで渡される場合に適しています。 いずれの場合も、子プロセスへの引数は、実行されているコマンドの名前で始まる必要があります。

末尾近くに2番目の「p」を含むバリアント( spawnlp()spawnlpe()spawnvp()、および spawnvpe() )は、 PATH環境変数を使用して、プログラムファイルを検索します。 環境が置き換えられるとき(次の段落で説明する spawn * e バリアントの1つを使用)、新しい環境が [X180Xのソースとして使用されます。 ] 変数。 他のバリアント、 spawnl()spawnle()spawnv()、および spawnve()は、[実行可能ファイルを見つけるためのX127X] 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)

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.P_NOWAIT

os.P_NOWAITO

spawn * ファミリーの関数の mode パラメーターに指定できる値。 これらの値のいずれかが指定されている場合、spawn*()関数は、新しいプロセスが作成されるとすぐに戻り、プロセスIDが戻り値になります。
os.P_WAIT
spawn * ファミリーの関数の mode パラメーターに指定できる値。 これが mode として指定されている場合、spawn*()関数は、新しいプロセスが完了するまで実行されず、実行が成功したプロセスの終了コード、または-signalシグナルがプロセスを強制終了した場合。
os.P_DETACH

os.P_OVERLAY

spawn * ファミリーの関数の mode パラメーターに指定できる値。 これらは、上記のリストよりも移植性が低くなります。 P_DETACHP_NOWAIT に似ていますが、新しいプロセスは呼び出し元プロセスのコンソールから切り離されています。 P_OVERLAY が使用されている場合、現在のプロセスが置き換えられます。 spawn * 関数は戻りません。
os.startfile(path[, operation])

関連するアプリケーションでファイルを開始します。

操作が指定されていないか'open'の場合、これはWindowsエクスプローラーでファイルをダブルクリックするか、 start コマンドの引数としてファイル名を指定するように機能します。対話型コマンドシェル:ファイルは、その拡張子が関連付けられているアプリケーション(存在する場合)で開かれます。

別の操作が与えられるとき、それはファイルで何をすべきかを指定する「コマンド動詞」でなければなりません。 Microsoftによって文書化されている一般的な動詞は、'print''edit'(ファイルで使用)、および'explore''find'(ディレクトリで使用)です。

startfile()は、関連付けられたアプリケーションが起動されるとすぐに戻ります。 アプリケーションが閉じるのを待つオプションはなく、アプリケーションの終了ステータスを取得する方法もありません。 path パラメータは、現在のディレクトリを基準にしています。 絶対パスを使用する場合は、最初の文字がスラッシュ('/')でないことを確認してください。 基盤となるWin32 ShellExecute()関数は、機能している場合は機能しません。 os.path.normpath()関数を使用して、パスがWin32用に適切にエンコードされていることを確認します。

インタプリタの起動オーバーヘッドを減らすために、Win32 ShellExecute()関数は、この関数が最初に呼び出されるまで解決されません。 関数を解決できない場合、 NotImplementedError が発生します。

os.system(command)

サブシェルでコマンド(文字列)を実行します。 これは、標準C関数system()を呼び出すことによって実装され、同じ制限があります。 sys.stdin などへの変更。 実行したコマンドの環境には反映されません。 コマンドが出力を生成すると、インタプリタの標準出力ストリームに送信されます。 C標準では、C関数の戻り値の意味が指定されていないため、Python関数の戻り値はシステムに依存します。

Unixでは、戻り値は wait()に指定された形式でエンコードされたプロセスの終了ステータスです。

Windowsの場合、戻り値はコマンドの実行後にシステムシェルによって返される値です。 シェルは、Windows環境変数 COMSPECによって指定されます。通常は cmd.exe であり、コマンド実行の終了ステータスを返します。 非ネイティブシェルを使用するシステムでは、シェルのドキュメントを参照してください。

サブプロセスモジュールは、新しいプロセスを生成してその結果を取得するためのより強力な機能を提供します。 この関数を使用するよりも、そのモジュールを使用することをお勧めします。 いくつかの役立つレシピについては、サブプロセスドキュメントの古い関数のサブプロセスモジュールセクションへの置き換えを参照してください。

Unixでは、 waitstatus_to_exitcode()を使用して、結果(終了ステータス)を終了コードに変換できます。 Windowsでは、結果は直接終了コードになります。

os.times()

現在のグローバル処理時間を返します。 戻り値は、次の5つの属性を持つオブジェクトです。

  • user-ユーザー時間

  • システム-システム時間

  • children_user-すべての子プロセスのユーザー時間

  • children_system-すべての子プロセスのシステム時間

  • elapsed-過去の定点からリアルタイムで経過

下位互換性のために、このオブジェクトはuserシステムchildren_userchildren_system、およびelapsedを含む5タプルのように動作します。この順序で。

Unixのマニュアルページ times(2)およびUnixの times(3)マニュアルページ、またはWindowsの GetProcessTimes MSDN を参照してください。 Windowsでは、userシステムのみが認識されます。 他の属性はゼロです。

バージョン3.3で変更:戻り値のタイプがタプルから名前付き属性を持つタプルのようなオブジェクトに変更されました。

os.wait()

子プロセスの完了を待ち、そのpidと終了ステータスの表示を含むタプルを返します。16ビットの数値。下位バイトはプロセスを強制終了した信号番号であり、上位バイトは終了ステータスです(信号の場合)。数はゼロです); コアファイルが作成された場合、下位バイトの上位ビットが設定されます。

waitstatus_to_exitcode()を使用して、終了ステータスを終了コードに変換できます。

も参照してください

waitpid()は、特定の子プロセスの完了を待機するために使用でき、より多くのオプションがあります。

os.waitid(idtype, id, options)

1つ以上の子プロセスが完了するのを待ちます。 idtype は、Linuxでは P_PIDP_PGIDP_ALL 、または P_PIDFD になります。 id は、待機するpidを指定します。 オプションは、 WEXITEDWSTOPPED 、または WCONTINUED の1つ以上のORから構成され、さらに WNOHANGとORすることができます。 または WNOWAIT 。 戻り値は、siginfo_t構造に含まれるデータを表すオブジェクトです。つまり、si_pidsi_uidsi_signosi_statussi_codeまたはNoneWNOHANG が指定されていて、待機状態の子がない場合)。

バージョン3.3の新機能。

os.P_PID
os.P_PGID
os.P_ALL

これらは、 waitid()idtype の可能な値です。 これらは、 id の解釈方法に影響します。

バージョン3.3の新機能。

os.P_PIDFD

これはLinux固有の idtype であり、 id がプロセスを参照するファイル記述子であることを示しています。

バージョン3.9の新機能。

os.WEXITED
os.WSTOPPED
os.WNOWAIT

waitid()options で使用できるフラグで、待機する子シグナルを指定します。

バージョン3.3の新機能。

os.CLD_EXITED
os.CLD_KILLED
os.CLD_DUMPED
os.CLD_TRAPPED
os.CLD_STOPPED
os.CLD_CONTINUED

これらは、 waitid()によって返される結果のsi_codeの可能な値です。

バージョン3.3の新機能。

バージョン3.9で変更: CLD_KILLED および CLD_STOPPED の値が追加されました。

os.waitpid(pid, options)

この関数の詳細は、UnixとWindowsで異なります。

Unixの場合:プロセスID pid で指定された子プロセスの完了を待ち、プロセスIDと終了ステータスの表示( wait()のようにエンコード)を含むタプルを返します。 呼び出しのセマンティクスは、整数 options の値の影響を受けます。これは、通常の操作では0である必要があります。

pid0より大きい場合、 waitpid()はその特定のプロセスのステータス情報を要求します。 pid0の場合、要求は現在のプロセスのプロセスグループ内の任意の子のステータスに対するものです。 pid-1の場合、要求は現在のプロセスのすべての子に関係します。 pid-1より小さい場合、プロセスグループ-pidpid の絶対値)内のすべてのプロセスのステータスが要求されます。

OSError は、syscallが-1を返すと、errnoの値で発生します。

Windowsの場合:プロセスハンドル pid で指定されたプロセスの完了を待ち、 pid を含むタプルを返し、その終了ステータスを8ビット左にシフトします(シフトするとクロスプラットフォームで使用されます)関数のより簡単)。 pid0以下の場合、Windowsでは特別な意味はなく、例外が発生します。 整数 options の値は効果がありません。 pid は、IDがわかっているプロセスを参照できますが、必ずしも子プロセスである必要はありません。 P_NOWAIT で呼び出された spawn * 関数は、適切なプロセスハンドルを返します。

waitstatus_to_exitcode()を使用して、終了ステータスを終了コードに変換できます。

バージョン3.5で変更:システムコールが中断され、シグナルハンドラが例外を発生させない場合、関数は InterruptedError 例外を発生させる代わりに、システムコールを再試行するようになりました([X223Xを参照] ] PEP 475 (理論的根拠)。

os.wait3(options)

waitpid()と同様ですが、プロセスID引数が指定されておらず、子のプロセスID、終了ステータスの表示、およびリソース使用状況情報を含む3要素のタプルが返されます。 リソースの使用情報の詳細については、 resourcegetrusage()を参照してください。 オプション引数は、 waitpid()および wait4()に提供されるものと同じです。

waitstatus_to_exitcode()を使用して、終了ステータスを終了コードに変換できます。

os.wait4(pid, options)

waitpid()と同様ですが、子のプロセスID、終了ステータスの表示、およびリソース使用状況情報を含む3要素のタプルが返されます。 リソースの使用情報の詳細については、 resourcegetrusage()を参照してください。 wait4()の引数は、 waitpid()に提供されている引数と同じです。

waitstatus_to_exitcode()を使用して、終了ステータスを終了コードに変換できます。

os.waitstatus_to_exitcode(status)

待機ステータスを終了コードに変換します。

Unixの場合:

  • プロセスが正常に終了した場合(WIFEXITED(status)がtrueの場合)、プロセスの終了ステータスを返します(WEXITSTATUS(status)を返します):結果は0以上です。

  • プロセスがシグナルによって終了した場合(WIFSIGNALED(status)がtrueの場合)、-signumを返します。ここで、 signum は、プロセスを終了させたシグナルの番号です(return [ X178X] ):結果が0未満。

  • それ以外の場合は、 ValueError を発生させます。

Windowsでは、 status を8ビット右にシフトして返します。

Unixでは、プロセスがトレースされている場合、または waitpid()WUNTRACED オプションで呼び出された場合、呼び出し元は最初にWIFSTOPPED(status)がtrueかどうかを確認する必要があります。 WIFSTOPPED(status)がtrueの場合、この関数を呼び出さないでください。

バージョン3.9の新機能。

os.WNOHANG
waitpid()のオプションは、子プロセスのステータスがすぐに利用できない場合にすぐに戻ります。 この場合、関数は(0, 0)を返します。
os.WCONTINUED
このオプションを使用すると、子プロセスのステータスが最後に報告されてからジョブ制御の停止から続行された場合に、子プロセスが報告されます。
os.WUNTRACED
このオプションを使用すると、子プロセスが停止しているが、停止してから現在の状態が報告されていない場合に、子プロセスが報告されます。

次の関数は、 system()wait()、または waitpid()によって返されるプロセスステータスコードをパラメーターとして受け取ります。 これらは、プロセスの処理を決定するために使用できます。

os.WCOREDUMP(status)

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

この関数は、 WIFSIGNALED()がtrueの場合にのみ使用する必要があります。

os.WIFCONTINUED(status)

停止した子が SIGCONT の配信によって再開された場合(プロセスがジョブ制御停止から続行された場合)はTrueを返し、それ以外の場合はFalseを返します。

WCONTINUED オプションを参照してください。

os.WIFSTOPPED(status)

シグナルの配信によってプロセスが停止した場合はTrueを返し、それ以外の場合はFalseを返します。

WIFSTOPPED()は、 waitpid()呼び出しが WUNTRACED オプションを使用して行われた場合、またはプロセスがトレースされている場合にのみTrueを返します([ X158X] ptrace(2))。

os.WIFSIGNALED(status)
プロセスがシグナルによって終了した場合はTrueを返し、それ以外の場合はFalseを返します。
os.WIFEXITED(status)
プロセスが正常に終了した場合、つまりexit()または_exit()を呼び出すか、main()から戻る場合は、Trueを返します。 それ以外の場合は、Falseを返します。
os.WEXITSTATUS(status)

プロセスの終了ステータスを返します。

この関数は、 WIFEXITED()がtrueの場合にのみ使用する必要があります。

os.WSTOPSIG(status)

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

この関数は、 WIFSTOPPED()がtrueの場合にのみ使用する必要があります。

os.WTERMSIG(status)

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

この関数は、 WIFSIGNALED()がtrueの場合にのみ使用する必要があります。


スケジューラへのインターフェース

これらの関数は、オペレーティングシステムによってプロセスにCPU時間を割り当てる方法を制御します。 これらは、一部のUnixプラットフォームでのみ使用できます。 詳細については、Unixのマンページを参照してください。

バージョン3.3の新機能。


次のスケジューリングポリシーは、オペレーティングシステムでサポートされている場合に公開されます。

os.SCHED_OTHER
デフォルトのスケジューリングポリシー。
os.SCHED_BATCH
コンピューターの残りの部分で対話性を維持しようとする、CPUを集中的に使用するプロセスのスケジューリングポリシー。
os.SCHED_IDLE
優先度が非常に低いバックグラウンドタスクのスケジューリングポリシー。
os.SCHED_SPORADIC
散発的なサーバープログラムのスケジューリングポリシー。
os.SCHED_FIFO
先入れ先出しスケジューリングポリシー。
os.SCHED_RR
ラウンドロビンスケジューリングポリシー。
os.SCHED_RESET_ON_FORK
このフラグは、他のスケジューリングポリシーとOR演算できます。 このフラグが設定されたプロセスがフォークすると、その子のスケジューリングポリシーと優先度がデフォルトにリセットされます。
class os.sched_param(sched_priority)

このクラスは、 sched_setparam()sched_setscheduler()、および sched_getparam()で使用される調整可能なスケジューリングパラメーターを表します。 それは不変です。

現時点では、可能なパラメータは1つだけです。

sched_priority

スケジューリングポリシーのスケジューリング優先度。

os.sched_get_priority_min(policy)
ポリシーの最小優先度値を取得します。 policy は、上記のスケジューリングポリシー定数の1つです。
os.sched_get_priority_max(policy)
ポリシーの最大優先度値を取得します。 policy は、上記のスケジューリングポリシー定数の1つです。
os.sched_setscheduler(pid, policy, param)
PID pid を使用してプロセスのスケジューリングポリシーを設定します。 pid が0の場合は、呼び出しプロセスを意味します。 policy は、上記のスケジューリングポリシー定数の1つです。 paramsched_param インスタンスです。
os.sched_getscheduler(pid)
PID pid のプロセスのスケジューリングポリシーを返します。 pid が0の場合は、呼び出しプロセスを意味します。 結果は、上記のスケジューリングポリシー定数の1つです。
os.sched_setparam(pid, param)
PID pid を使用してプロセスのスケジューリングパラメータを設定します。 pid が0の場合は、呼び出しプロセスを意味します。 paramsched_param インスタンスです。
os.sched_getparam(pid)
PID pid のプロセスの sched_param インスタンスとしてスケジューリングパラメータを返します。 pid が0の場合は、呼び出しプロセスを意味します。
os.sched_rr_get_interval(pid)
PID pid のプロセスのラウンドロビンクォンタムを秒単位で返します。 pid が0の場合は、呼び出しプロセスを意味します。
os.sched_yield()
CPUを自発的に放棄します。
os.sched_setaffinity(pid, mask)
PID pid のプロセス(またはゼロの場合は現在のプロセス)をCPUのセットに制限します。 mask は、プロセスを制限する必要のあるCPUのセットを表す整数の反復可能オブジェクトです。
os.sched_getaffinity(pid)
PID pid のプロセス(またはゼロの場合は現在のプロセス)が制限されているCPUのセットを返します。


その他のシステム情報

os.confstr(name)

文字列値のシステム構成値を返します。 name は、取得する構成値を指定します。 定義されたシステム値の名前である文字列である可能性があります。 これらの名前は、多くの標準(POSIX、Unix 95、Unix 98など)で指定されています。 一部のプラットフォームでは、追加の名前も定義されています。 ホストオペレーティングシステムに認識されている名前は、confstr_namesディクショナリのキーとして指定されています。 そのマッピングに含まれていない構成変数の場合、 name の整数の受け渡しも受け入れられます。

name で指定された構成値が定義されていない場合は、Noneが返されます。

name が文字列であり、不明な場合、 ValueError が発生します。 name の特定の値がホストシステムでサポートされていない場合、confstr_namesに含まれていても、 OSErrorerrno.EINVALで発生します。エラー番号は

os.confstr_names
confstr()によって受け入れられた名前を、ホストオペレーティングシステムによってそれらの名前に対して定義された整数値にマッピングする辞書。 これは、システムに認識されている名前のセットを判別するために使用できます。
os.cpu_count()

システム内のCPUの数を返します。 不明な場合はNoneを返します。

この数は、現在のプロセスが使用できるCPUの数と同じではありません。 使用可能なCPUの数はlen(os.sched_getaffinity(0))で取得できます。

バージョン3.4の新機能。

os.getloadavg()
過去1、5、および15分間に平均化されたシステム実行キュー内のプロセス数を返すか、負荷平均が取得できない場合は OSError を発生させます。
os.sysconf(name)
整数値のシステム構成値を返します。 name で指定された構成値が定義されていない場合は、-1が返されます。 confstr()name パラメーターに関するコメントはここにも当てはまります。 既知の名前に関する情報を提供する辞書は、sysconf_namesによって提供されます。
os.sysconf_names
sysconf()によって受け入れられた名前を、ホストオペレーティングシステムによってそれらの名前に対して定義された整数値にマッピングする辞書。 これは、システムに認識されている名前のセットを判別するために使用できます。

次のデータ値は、パス操作操作をサポートするために使用されます。 これらはすべてのプラットフォームに対して定義されています。

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

os.curdir
現在のディレクトリを参照するためにオペレーティングシステムによって使用される定数文字列。 これは、WindowsおよびPOSIXの'.'です。 os.path からも入手できます。

os.pardir
オペレーティングシステムが親ディレクトリを参照するために使用する定数文字列。 これは、WindowsおよびPOSIXの'..'です。 os.path からも入手できます。

os.sep
オペレーティングシステムがパス名コンポーネントを区切るために使用する文字。 これは、POSIXの場合は'/'、Windowsの場合は'\\'です。 パス名を解析または連結するには、これを知っているだけでは不十分であることに注意してください— os.path.split()および os.path.join()を使用します—ただし、場合によっては便利です。 。 os.path からも入手できます。

os.altsep
オペレーティングシステムがパス名コンポーネントを区切るために使用する代替文字。区切り文字が1つしかない場合はNone。 これは、sepが円記号であるWindowsシステムでは'/'に設定されます。 os.path からも入手できます。

os.extsep
ベースファイル名と拡張子を区切る文字。 たとえば、os.py'.'os.path からも入手できます。

os.pathsep
POSIXの場合は':'、Windowsの場合は';'など、検索パスコンポーネントを区切るためにオペレーティングシステムで従来使用されていた文字( PATHなど)。 os.path からも入手できます。
os.defpath
環境に'PATH'キーがない場合に、 exec * p * および spawn * p * によって使用されるデフォルトの検索パス。 os.path からも入手できます。
os.linesep
現在のプラットフォームで行を区切る(または終了する)ために使用される文字列。 これは、POSIXの場合は'\n'のように単一の文字にすることも、Windowsの場合は'\r\n'のように複数の文字にすることもできます。 テキストモード(デフォルト)で開いたファイルを書き込むときは、 os.linesep を行末記号として使用しないでください。 代わりに、すべてのプラットフォームで単一の'\n'を使用してください。
os.devnull
nullデバイスのファイルパス。 例:POSIXの場合は'/dev/null'、Windowsの場合は'nul'os.path からも入手できます。
os.RTLD_LAZY
os.RTLD_NOW
os.RTLD_GLOBAL
os.RTLD_LOCAL
os.RTLD_NODELETE
os.RTLD_NOLOAD
os.RTLD_DEEPBIND

setdlopenflags()および getdlopenflags()関数で使用するフラグ。 さまざまなフラグの意味については、Unixのマニュアルページ dlopen(3)を参照してください。

バージョン3.3の新機能。


乱数

os.getrandom(size, flags=0)

最大サイズのランダムバイトを取得します。 この関数は、要求されたよりも少ないバイトを返すことができます。

これらのバイトは、ユーザースペースの乱数ジェネレーターをシードするため、または暗号化の目的で使用できます。

getrandom()は、デバイスドライバーやその他の環境ノイズ源から収集されたエントロピーに依存しています。 大量のデータを不必要に読み取ると、/dev/randomおよび/dev/urandomデバイスの他のユーザーに悪影響を及ぼします。

flags引数は、 os.GRND_RANDOM および GRND_NONBLOCK の0個以上の値をORで結合できるビットマスクです。

Linux getrandom()のマニュアルページも参照してください。

バージョン3.6の新機能。

os.urandom(size)

暗号化の使用に適したサイズランダムバイトの文字列を返します。

この関数は、OS固有のランダム性ソースからランダムバイトを返します。 返されるデータは、暗号化アプリケーションでは十分に予測できないはずですが、正確な品質はOSの実装によって異なります。

Linuxでは、getrandom() syscallが使用可能な場合、ブロッキングモードで使用されます。システムのurandomエントロピープールが初期化されるまでブロックします(128ビットのエントロピーがカーネルによって収集されます)。 理論的根拠については、 PEP 524 を参照してください。 Linuxでは、 getrandom()関数を使用して、非ブロッキングモードでランダムバイトを取得するか( GRND_NONBLOCK フラグを使用)、システムのurandomエントロピープールが初期化されるまでポーリングできます。

Unixライクなシステムでは、ランダムなバイトが/dev/urandomデバイスから読み取られます。 /dev/urandomデバイスが使用できないか読み取りできない場合、 NotImplementedError 例外が発生します。

Windowsでは、CryptGenRandom()を使用します。

も参照してください

secrets モジュールは、より高いレベルの機能を提供します。 プラットフォームが提供する乱数ジェネレーターへの使いやすいインターフェイスについては、 random.SystemRandom を参照してください。

バージョン3.6.0で変更: Linuxでは、セキュリティを強化するためにgetrandom()がブロッキングモードで使用されるようになりました。

バージョン3.5.2で変更: Linuxで、getrandom() syscallブロック(urandomエントロピープールがまだ初期化されていない)の場合、/dev/urandomの読み取りにフォールバックします。

バージョン3.5で変更: Linux 3.17以降では、getrandom()システムコールが使用可能になったときに使用されるようになりました。 OpenBSD 5.6以降では、C getentropy()関数が使用されるようになりました。 これらの関数は、内部ファイル記述子の使用を回避します。

os.GRND_NONBLOCK

デフォルトでは、/dev/randomから読み取る場合、 getrandom()は、使用可能なランダムバイトがない場合にブロックし、/dev/urandomから読み取る場合、エントロピープールがまだない場合はブロックします。初期化されました。

GRND_NONBLOCK フラグが設定されている場合、 getrandom()はこれらの場合にブロックせず、代わりに BlockingIOError を即座に発生させます。

バージョン3.6の新機能。

os.GRND_RANDOM

このビットが設定されている場合、ランダムなバイトが/dev/urandomプールではなく/dev/randomプールから引き出されます。

バージョン3.6の新機能。