16.1。 os —その他のオペレーティングシステムインターフェイス
ソースコード: :source: `Lib / os.py`
このモジュールは、オペレーティングシステムに依存する機能を使用するポータブルな方法を提供します。 ファイルの読み取りまたは書き込みのみを行う場合は open()を、パスを操作する場合は os.path モジュールを、すべての行を読み取る場合はを参照してください。コマンドラインのすべてのファイルで、 fileinput モジュールを参照してください。 一時ファイルとディレクトリの作成については、 tempfile モジュールを参照してください。高レベルのファイルとディレクトリの処理については、 shutil モジュールを参照してください。
これらの機能の可用性に関する注意:
- Pythonのすべての組み込みオペレーティングシステム依存モジュールの設計は、同じ機能が利用可能である限り、同じインターフェイスを使用するようになっています。 たとえば、関数
os.stat(path)
は、パスに関する統計情報を同じ形式で返します(これはたまたまPOSIXインターフェイスで発生したものです)。 - 特定のオペレーティングシステムに固有の拡張機能も os モジュールから入手できますが、それらを使用することはもちろん移植性に対する脅威です。
- パスまたはファイル名を受け入れるすべての関数は、バイトオブジェクトと文字列オブジェクトの両方を受け入れ、パスまたはファイル名が返された場合、同じタイプのオブジェクトになります。
- 「可用性:Unix」の注記は、この関数がUnixシステムで一般的に見られることを意味します。 特定のオペレーティングシステムでの存在については何も主張しません。
- 特に明記されていない限り、「可用性:Unix」と主張するすべての機能は、Unixコア上に構築されたMac OSXでサポートされています。
ノート
このモジュールのすべての関数は、ファイル名とパスに無効またはアクセスできない場合、または正しいタイプであるがオペレーティングシステムで受け入れられないその他の引数の場合に、 OSError を発生させます。
- exception os.error
- 組み込みの OSError 例外のエイリアス。
- os.name
インポートされたオペレーティングシステムに依存するモジュールの名前。 現在、
'posix'
、'nt'
、'java'
の名前が登録されています。も参照してください
sys.platform の粒度はより細かくなります。 os.uname()は、システムに依存するバージョン情報を提供します。
platform モジュールは、システムのIDの詳細なチェックを提供します。
16.1.1。 ファイル名、コマンドライン引数、および環境変数
Pythonでは、ファイル名、コマンドライン引数、および環境変数は文字列型を使用して表されます。 一部のシステムでは、これらの文字列をオペレーティングシステムに渡す前に、バイトとの間でデコードする必要があります。 Pythonは、ファイルシステムエンコーディングを使用してこの変換を実行します( sys.getfilesystemencoding()を参照)。
バージョン3.1で変更:一部のシステムでは、ファイルシステムエンコーディングを使用した変換が失敗する場合があります。 この場合、Pythonは surrogateescapeエンコーディングエラーハンドラーを使用します。これは、デコード時にデコード不可能なバイトがUnicode文字U + DCxxに置き換えられ、エンコード時に元のバイトに再度変換されることを意味します。
ファイルシステムエンコーディングは、128未満のすべてのバイトを正常にデコードすることを保証する必要があります。 ファイルシステムエンコーディングがこの保証を提供できない場合、API関数はUnicodeErrorsを発生させる可能性があります。
16.1.2。 プロセスパラメータ
これらの関数とデータ項目は情報を提供し、現在のプロセスとユーザーを操作します。
- os.ctermid()
プロセスの制御端末に対応するファイル名を返します。
可用性:Unix。
- os.environ
文字列環境を表す mapping オブジェクト。 たとえば、
environ['HOME']
は(一部のプラットフォームでは)ホームディレクトリのパス名であり、Cのgetenv("HOME")
と同等です。このマッピングは、 os モジュールが最初にインポートされたとき、通常は
site.py
の処理の一部としてPythonの起動時にキャプチャされます。 この時間以降に行われた環境への変更は、os.environ
を直接変更することによって行われた変更を除いて、os.environ
には反映されません。プラットフォームが putenv()関数をサポートしている場合、このマッピングを使用して、環境を変更したり、環境を照会したりできます。 putenv()は、マッピングが変更されると自動的に呼び出されます。
Unixでは、キーと値は sys.getfilesystemencoding()および
'surrogateescape'
エラーハンドラーを使用します。 別のエンコーディングを使用する場合は、 environment を使用してください。ノート
putenv()を直接呼び出しても、
os.environ
は変更されないため、os.environ
を変更することをお勧めします。ノート
FreeBSDやMacOS Xを含む一部のプラットフォームでは、
environ
を設定するとメモリリークが発生する可能性があります。putenv()
のシステムドキュメントを参照してください。putenv()が提供されていない場合、このマッピングの変更されたコピーが適切なプロセス作成関数に渡され、子プロセスが変更された環境を使用するようになります。
プラットフォームが unsetenv()関数をサポートしている場合は、このマッピングの項目を削除して、環境変数を設定解除できます。 unsetenv()は、アイテムが
os.environ
から削除されたとき、およびpop()
またはclear()
メソッドのいずれかが呼び出されたときに自動的に呼び出されます。
- os.environb
環境のバイトバージョン:環境をバイト文字列として表すマッピングオブジェクト。 environ と environb が同期されます( environb の更新 environ を変更し、その逆も同様です)。
environb は、 supports_bytes_environ がTrueの場合にのみ使用できます。
バージョン3.2の新機能。
- 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 の値を返します。 key 、 default および結果はstrです。
Unixでは、キーと値は sys.getfilesystemencoding()および
'surrogateescape'
エラーハンドラーでデコードされます。 別のエンコーディングを使用する場合は、 os.getenvb()を使用してください。可用性:Unix、Windowsのほとんどのフレーバー。
- os.getenvb(key, default=None)
環境変数 key が存在する場合はその値を返し、存在しない場合は default の値を返します。 キー、デフォルトおよび結果はバイトです。
getenvb()は、 supports_bytes_environ がTrueの場合にのみ使用できます。
可用性:Unixのほとんどのフレーバー。
バージョン3.2の新機能。
- os.get_exec_path(env=None)
プロセスの起動時に、シェルと同様に、名前付き実行可能ファイルを検索するディレクトリのリストを返します。 env は、指定されている場合、でPATHを検索するための環境変数ディクショナリである必要があります。 デフォルトでは、 env が
None
の場合、 environ が使用されます。バージョン3.2の新機能。
- os.getegid()
現在のプロセスの実効グループIDを返します。 これは、現在のプロセスで実行されているファイルの「setid」ビットに対応します。
可用性:Unix。
- os.geteuid()
現在のプロセスの有効なユーザーIDを返します。
可用性:Unix。
- os.getgid()
現在のプロセスの実際のグループIDを返します。
可用性:Unix。
- os.getgrouplist(user, group)
user が属するグループIDのリストを返します。 group がリストにない場合は、リストに含まれます。 通常、 group は、 user のパスワードレコードのグループIDフィールドとして指定されます。
可用性:Unix。
バージョン3.3の新機能。
- os.getgroups()
現在のプロセスに関連付けられている補足グループIDのリストを返します。
可用性:Unix。
ノート
Mac OS Xでは、 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のログイン名を取得します。可用性:Unix、Windows。
- os.getpgid(pid)
プロセスID pid のプロセスのプロセスグループIDを返します。 pid が0の場合、現在のプロセスのプロセスグループIDが返されます。
可用性:Unix。
- os.getpgrp()
現在のプロセスグループのIDを返します。
可用性:Unix。
- os.getpid()
- 現在のプロセスIDを返します。
- os.getppid()
親のプロセスIDを返します。 親プロセスが終了すると、Unixでは返されるIDはinitプロセス(1)の1つであり、Windowsでは同じIDであり、別のプロセスですでに再利用されている可能性があります。
可用性:Unix、Windows。
バージョン3.2で変更: Windowsのサポートが追加されました。
- os.getpriority(which, who)
プログラムのスケジューリングの優先順位を取得します。 which は PRIO_PROCESS 、 PRIO_PGRP 、または PRIO_USER のいずれかであり、 who はに関連して解釈されますX145X] which ( PRIO_PROCESS のプロセス識別子、 PRIO_PGRP のプロセスグループ識別子、および PRIO_USER のユーザーID)。 who のゼロ値は、(それぞれ)呼び出しプロセス、呼び出しプロセスのプロセスグループ、または呼び出しプロセスの実際のユーザーIDを示します。
可用性:Unix。
バージョン3.3の新機能。
- os.PRIO_PROCESS
os.PRIO_PGRP
os.PRIO_USER getpriority()および setpriority()関数のパラメーター。
可用性:Unix。
バージョン3.3の新機能。
- os.getresuid()
現在のプロセスの実際の、効果的な、保存されたユーザーIDを示すタプル(ruid、euid、suid)を返します。
可用性:Unix。
バージョン3.2の新機能。
- os.getresgid()
現在のプロセスの実際の、効果的な、保存されたグループIDを示すタプル(rgid、egid、sgid)を返します。
可用性:Unix。
バージョン3.2の新機能。
- os.getuid()
現在のプロセスの実際のユーザーIDを返します。
可用性:Unix。
- os.initgroups(username, gid)
システムinitgroups()を呼び出して、指定されたユーザー名がメンバーであるすべてのグループと指定されたグループIDでグループアクセスリストを初期化します。
可用性:Unix。
バージョン3.2の新機能。
- os.putenv(key, value)
key という名前の環境変数を文字列 value に設定します。 このような環境の変更は、 os.system()、 popen()または fork()および execv()で開始されるサブプロセスに影響します。 。
可用性:Unix、Windowsのほとんどのフレーバー。
ノート
FreeBSDやMacOS 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。
ノート
Mac OS Xでは、グループの長さは、システムで定義された有効なグループIDの最大数(通常は16)を超えてはなりません。 setgroups()を呼び出して同じグループリストセットを返さない場合については、 getgroups()のドキュメントを参照してください。
- os.setpgrp()
実装されているバージョン(存在する場合)に応じて、システムコール
setpgrp()
またはsetpgrp(0, 0)
を呼び出します。 セマンティクスについては、Unixのマニュアルを参照してください。可用性:Unix。
- os.setpgid(pid, pgrp)
システムコール
setpgid()
を呼び出して、ID pid のプロセスのプロセスグループIDをID pgrp のプロセスグループに設定します。 セマンティクスについては、Unixのマニュアルを参照してください。可用性:Unix。
- os.setpriority(which, who, priority)
プログラムのスケジューリングの優先順位を設定します。 which は PRIO_PROCESS 、 PRIO_PGRP 、または PRIO_USER のいずれかであり、 who はに関連して解釈されますX145X] which ( PRIO_PROCESS のプロセス識別子、 PRIO_PGRP のプロセスグループ識別子、および PRIO_USER のユーザーID)。 who のゼロ値は、(それぞれ)呼び出しプロセス、呼び出しプロセスのプロセスグループ、または呼び出しプロセスの実際のユーザーIDを示します。 priority は、-20から19の範囲の値です。 デフォルトの優先度は0です。 優先度が低いほど、スケジューリングが有利になります。
可用性:Unix
バージョン3.3の新機能。
- os.setregid(rgid, egid)
現在のプロセスの実際の有効なグループIDを設定します。
可用性:Unix。
- os.setresgid(rgid, egid, sgid)
現在のプロセスの実際の、効果的な、保存されたグループIDを設定します。
可用性:Unix。
バージョン3.2の新機能。
- os.setresuid(ruid, euid, suid)
現在のプロセスの実際の、効果的な、保存されたユーザーIDを設定します。
可用性:Unix。
バージョン3.2の新機能。
- os.setreuid(ruid, euid)
現在のプロセスの実際の有効なユーザーIDを設定します。
可用性:Unix。
- os.getsid(pid)
システムコール
getsid()
を呼び出します。 セマンティクスについては、Unixのマニュアルを参照してください。可用性:Unix。
- os.setsid()
システムコール
setsid()
を呼び出します。 セマンティクスについては、Unixのマニュアルを参照してください。可用性:Unix。
- os.setuid(uid)
現在のプロセスのユーザーIDを設定します。
可用性:Unix。
- 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
-ハードウェア識別子
下位互換性のために、このオブジェクトは反復可能であり、
sysname
、nodename
、release
、version
、および [を含む5タプルのように動作します。 X149X]この順序で。一部のシステムは、
nodename
を8文字または先頭のコンポーネントに切り捨てます。 ホスト名を取得するためのより良い方法は、 socket.gethostname()またはsocket.gethostbyaddr(socket.gethostname())
です。可用性:Unixの最近のフレーバー。
バージョン3.3で変更:戻り値のタイプがタプルから名前付き属性を持つタプルのようなオブジェクトに変更されました。
- os.unsetenv(key)
key という名前の環境変数の設定を解除(削除)します。 このような環境の変更は、 os.system()、 popen()または fork()および execv()で開始されるサブプロセスに影響します。 。
unsetenv()がサポートされている場合、
os.environ
内のアイテムの削除は、 unsetenv()への対応する呼び出しに自動的に変換されます。 ただし、 unsetenv()を呼び出してもos.environ
は更新されないため、実際にはos.environ
のアイテムを削除することをお勧めします。可用性:Unix、Windowsのほとんどのフレーバー。
16.1.3。 ファイルオブジェクトの作成
この関数は、新しいファイルオブジェクトを作成します。 (ファイル記述子を開くには、 open()も参照してください。)
- os.fdopen(fd, *args, **kwargs)
- ファイル記述子 fd に接続されている開いているファイルオブジェクトを返します。 これは open()組み込み関数のエイリアスであり、同じ引数を受け入れます。 唯一の違いは、 fdopen()の最初の引数は常に整数でなければならないということです。
16.1.4。 ファイル記述子の操作
これらの関数は、ファイル記述子を使用して参照されるI / Oストリームで動作します。
ファイル記述子は、現在のプロセスによって開かれたファイルに対応する小さな整数です。 たとえば、標準入力は通常ファイル記述子0、標準出力は1、標準エラーは2です。 プロセスによって開かれた他のファイルには、3、4、5などが割り当てられます。 「ファイル記述子」という名前は少し誤解を招きます。 Unixプラットフォームでは、ソケットとパイプもファイル記述子によって参照されます。
fileno()メソッドを使用して、必要に応じてファイルオブジェクトに関連付けられたファイル記述子を取得できます。 ファイル記述子を直接使用すると、データの内部バッファリングなどの側面を無視して、ファイルオブジェクトメソッドがバイパスされることに注意してください。
- os.close(fd)
ファイル記述子 fd を閉じます。
- 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.device_encoding(fd)
- fd に関連付けられているデバイスが端末に接続されている場合、そのエンコーディングを説明する文字列を返します。 それ以外の場合は、 None を返します。
- os.dup(fd)
ファイル記述子 fd の複製を返します。 新しいファイル記述子は継承不可です。
Windowsでは、標準ストリーム(0:stdin、1:stdout、2:stderr)を複製する場合、新しいファイル記述子は継承可能です。
バージョン3.4で変更:新しいファイル記述子は継承できなくなりました。
- os.dup2(fd, fd2, inheritable=True)
ファイル記述子 fd を fd2 に複製し、必要に応じて後者を最初に閉じます。 ファイル記述子 fd2 はデフォルトで inheritable であり、 inheritable が
False
の場合は非継承です。バージョン3.4で変更:オプションの inheritable パラメーターを追加します。
- os.fchmod(fd, mode)
fd で指定されたファイルのモードを数値の mode に変更します。 mode の可能な値については、 chmod()のドキュメントを参照してください。 Python 3.3以降、これは
os.chmod(fd, mode)
と同等です。可用性:Unix。
- os.fchown(fd, uid, gid)
fd で指定されたファイルの所有者とグループIDを数値の uid と gid に変更します。 IDの1つを変更しないままにするには、-1に設定します。 chown()を参照してください。 Python 3.3以降、これは
os.chown(fd, uid, gid)
と同等です。可用性:Unix。
- os.fdatasync(fd)
ファイル記述子 fd を含むファイルをディスクに強制的に書き込みます。 メタデータの更新を強制しません。
可用性:Unix。
ノート
この機能はMacOSでは利用できません。
- os.fpathconf(fd, name)
開いているファイルに関連するシステム構成情報を返します。 name は、取得する構成値を指定します。 定義されたシステム値の名前である文字列である可能性があります。 これらの名前は、多くの標準(POSIX.1、Unix 95、Unix 98など)で指定されています。 一部のプラットフォームでは、追加の名前も定義されています。 ホストオペレーティングシステムに認識されている名前は、
pathconf_names
ディクショナリに記載されています。 そのマッピングに含まれていない構成変数の場合、 name の整数の受け渡しも受け入れられます。name が文字列であり、不明な場合、 ValueError が発生します。 name の特定の値がホストシステムでサポートされていない場合、
pathconf_names
に含まれていても、 OSError は errno.EINVALで発生します。エラー番号は。Python 3.3以降、これは
os.pathconf(fd, name)
と同等です。可用性:Unix。
- os.fstat(fd)
ファイル記述子 fd のステータスを取得します。 stat_result オブジェクトを返します。
Python 3.3以降、これは
os.stat(fd)
と同等です。も参照してください
stat()関数。
- os.fstatvfs(fd)
statvfs()のように、ファイル記述子 fd に関連付けられたファイルを含むファイルシステムに関する情報を返します。 Python 3.3以降、これは
os.statvfs(fd)
と同等です。可用性:Unix。
- os.fsync(fd)
ファイル記述子 fd を含むファイルをディスクに強制的に書き込みます。 Unixでは、これはネイティブの
fsync()
関数を呼び出します。 Windowsでは、MS_commit()
機能。バッファリングされたPython ファイルオブジェクト f から始める場合は、最初に
f.flush()
を実行し、次にos.fsync(f.fileno())
を実行して、すべての内部バッファを確認します。 f に関連付けられているものがディスクに書き込まれます。可用性:Unix、Windows。
- os.ftruncate(fd, length)
ファイル記述子 fd に対応するファイルを切り捨てて、サイズが最大長さバイトになるようにします。 Python 3.3以降、これは
os.truncate(fd, length)
と同等です。可用性:Unix、Windows。
バージョン3.5で変更: Windowsのサポートが追加されました
- os.get_blocking(fd)
ファイル記述子のブロックモードを取得します。 O_NONBLOCK フラグが設定されている場合は
False
、フラグがクリアされている場合はTrue
です。set_blocking()および socket.socket.setblocking()も参照してください。
可用性:Unix。
バージョン3.5の新機能。
- os.isatty(fd)
- ファイル記述子 fd が開いていて、tty(-like)デバイスに接続されている場合は、
True
を返します。それ以外の場合は、False
を返します。
- os.lockf(fd, cmd, len)
開いているファイル記述子にPOSIXロックを適用、テスト、または削除します。 fd は開いているファイル記述子です。 cmd は、使用するコマンドを指定します- F_LOCK 、 F_TLOCK 、 F_ULOCK 、または F_TEST のいずれか。 len は、ロックするファイルのセクションを指定します。
可用性:Unix。
バージョン3.3の新機能。
- os.F_LOCK
os.F_TLOCK
os.F_ULOCK
os.F_TEST lockf()が実行するアクションを指定するフラグ。
可用性:Unix。
バージョン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_HOLE
やos.SEEK_DATA
などの追加の値をサポートする可能性があります。
- os.open(path, flags, mode=0o777, *, dir_fd=None)
ファイル path を開き、 flags に従ってさまざまなフラグを設定し、場合によっては mode に従ってそのモードを設定します。 モードを計算するとき、現在のumask値は最初にマスクされます。 新しく開いたファイルのファイル記述子を返します。 新しいファイル記述子は継承不可です。
フラグとモードの値の説明については、Cランタイムのドキュメントを参照してください。 フラグ定数( O_RDONLY や O_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ライブラリで定義されていない場合は存在しません。
- os.openpty()
新しい疑似端末ペアを開きます。 ptyとttyのファイル記述子のペア
(master, slave)
をそれぞれ返します。 新しいファイル記述子は継承不可です。 (少し)移植性の高いアプローチの場合は、 pty モジュールを使用します。可用性:Unixのいくつかのフレーバー。
バージョン3.4で変更:新しいファイル記述子は継承できなくなりました。
- os.pipe()
パイプを作成します。 それぞれ読み取りと書き込みに使用できるファイル記述子のペア
(r, w)
を返します。 新しいファイル記述子は継承不可です。可用性:Unix、Windows。
バージョン3.4で変更:新しいファイル記述子は継承できなくなりました。
- os.pipe2(flags)
フラグをアトミックに設定してパイプを作成します。 フラグは、 O_NONBLOCK 、 O_CLOEXEC の1つ以上の値をOR演算することで作成できます。 それぞれ読み取りと書き込みに使用できるファイル記述子のペア
(r, w)
を返します。可用性:Unixのいくつかのフレーバー。
バージョン3.3の新機能。
- os.posix_fallocate(fd, offset, len)
offset から始まり、 len バイトまで、 fd で指定されたファイルに十分なディスク容量が割り当てられていることを確認します。
可用性:Unix。
バージョン3.3の新機能。
- os.posix_fadvise(fd, offset, len, advice)
特定のパターンでデータにアクセスする意図を発表し、カーネルが最適化できるようにします。 このアドバイスは、 fd で指定されたファイルの領域に適用され、 offset で始まり、 len バイトまで続きます。 Advice は、 POSIX_FADV_NORMAL 、 POSIX_FADV_SEQUENTIAL 、 POSIX_FADV_RANDOM 、 POSIX_FADV_NOREUSE 、、のいずれかです。 POSIX_FADV_DONTNEED 。
可用性:Unix。
バージョン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 で使用できるフラグで、使用される可能性のあるアクセスパターンを指定します。
可用性:Unix。
バージョン3.3の新機能。
- os.pread(fd, buffersize, offset)
offset の位置にあるファイル記述子 fd から読み取ります。 最大 buffersize バイト数を読み取ります。 ファイルオフセットは変更されません。
可用性:Unix。
バージョン3.3の新機能。
- os.pwrite(fd, str, offset)
bytestring を offset からファイル記述子 fd に書き込み、ファイルオフセットは変更しません。
可用性:Unix。
バージョン3.3の新機能。
- 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, in, offset, count)
os.sendfile(out, in, offset, count, [headers, ][trailers, ]flags=0) count バイトをファイル記述子 in から offset から始まるファイル記述子 out にコピーします。 送信されたバイト数を返します。 EOFに達すると、0を返します。
最初の関数表記は、 sendfile()を定義するすべてのプラットフォームでサポートされています。
Linuxでは、 offset が
None
として指定されている場合、バイトは in の現在の位置から読み取られ、 in の位置が更新されます。 。2番目のケースは、Mac OS XおよびFreeBSDで使用できます。ここで、 headers および trailers は、のからのデータの前後に書き込まれるバッファの任意のシーケンスです。書かれています。 最初の場合と同じように返されます。
Mac OS XおよびFreeBSDでは、 count の値0は、 in の終わりに達するまで送信することを指定します。
すべてのプラットフォームは out ファイル記述子としてソケットをサポートし、一部のプラットフォームは他のタイプを許可します(例: 通常のファイル、パイプ)も同様です。
クロスプラットフォームアプリケーションでは、ヘッダー、トレーラー、およびフラグ引数を使用しないでください。
可用性:Unix。
ノート
sendfile()の上位ラッパーについては、 socket.socket.sendfile()を参照してください。
バージョン3.3の新機能。
- os.set_blocking(fd, blocking)
指定されたファイル記述子のブロックモードを設定します。 ブロッキングが
False
の場合は、 O_NONBLOCK フラグを設定し、それ以外の場合はフラグをクリアします。get_blocking()および socket.socket.setblocking()も参照してください。
可用性:Unix。
バージョン3.5の新機能。
- os.SF_NODISKIO
os.SF_MNOWAIT
os.SF_SYNC sendfile()関数のパラメーター(実装でサポートされている場合)。
可用性:Unix。
バージョン3.3の新機能。
- os.readv(fd, buffers)
ファイル記述子 fd からいくつかの可変バイトのようなオブジェクト バッファに読み込みます。 readv()は、データがいっぱいになるまで各バッファーにデータを転送してから、シーケンス内の次のバッファーに移動して残りのデータを保持します。 readv()は、読み取られた合計バイト数を返します(これは、すべてのオブジェクトの合計容量より少ない場合があります)。
可用性:Unix。
バージョン3.3の新機能。
- os.tcgetpgrp(fd)
fd ( os.open()によって返されるオープンファイル記述子)で指定された端末に関連付けられたプロセスグループを返します。
可用性:Unix。
- os.tcsetpgrp(fd, pg)
fd ( os.open()によって返されるオープンファイル記述子)で指定された端末に関連付けられたプロセスグループを pg に設定します。
可用性:Unix。
- os.ttyname(fd)
ファイル記述子 fd に関連付けられた端末デバイスを指定する文字列を返します。 fd が端末デバイスに関連付けられていない場合、例外が発生します。
可用性:Unix。
- 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)を設定する場合があります。
writev()は、各オブジェクトの内容をファイル記述子に書き込み、書き込まれた合計バイト数を返します。
可用性:Unix。
バージョン3.3の新機能。
16.1.4.1。 端末のサイズを照会する
バージョン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
は低レベルの実装です。可用性:Unix、Windows。
- class os.terminal_size
ターミナルウィンドウサイズの
(columns, lines)
を保持するタプルのサブクラス。- columns
ターミナルウィンドウの幅(文字数)。
- lines
ターミナルウィンドウの高さ(文字数)。
16.1.4.2。 ファイル記述子の継承
バージョン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)
指定されたハンドル(ブール値)の「継承可能」フラグを取得します。
可用性:Windows。
- os.set_handle_inheritable(handle, inheritable)
指定されたハンドルの「継承可能」フラグを設定します。
可用性:Windows。
16.1.5。 ファイルとディレクトリ
一部のUnixプラットフォームでは、これらの関数の多くが次の機能の1つ以上をサポートしています。
ファイル記述子の指定:一部の関数では、 path 引数は、パス名を示す文字列だけでなく、ファイル記述子にすることもできます。 関数は、記述子によって参照されるファイルを操作します。 (POSIXシステムの場合、Pythonは
f...
バージョンの関数を呼び出します。)os.supports_fd を使用して、プラットフォーム上のファイル記述子として path を指定できるかどうかを確認できます。 使用できない場合は、使用すると NotImplementedError が発生します。
関数が dir_fd または follow_symlinks 引数もサポートしている場合、ファイル記述子として path を指定するときにそれらのいずれかを指定するとエラーになります。
ディレクトリ記述子に関連するパス: dir_fd が
None
でない場合、ディレクトリを参照するファイル記述子である必要があり、操作するパスは相対である必要があります。 その場合、パスはそのディレクトリからの相対パスになります。 パスが絶対パスの場合、 dir_fd は無視されます。 (POSIXシステムの場合、Pythonは...at
またはf...at
バージョンの関数を呼び出します。)os.supports_dir_fd を使用して、プラットフォームで dir_fd がサポートされているかどうかを確認できます。 使用できない場合は、使用すると NotImplementedError が発生します。
シンボリックリンクをたどらない: follow_symlinks が
False
であり、操作するパスの最後の要素がシンボリックリンクの場合、関数はシンボリックリンク自体を操作しますリンクが指すファイルの代わりに。 (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_ids が
True
の場合、 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_fd 、 effective_ids 、および follow_symlinks パラメーターが追加されました。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.F_OK
os.R_OK
os.W_OK
os.X_OK
- access()の mode パラメーターとして渡す値で、 path の存在、可読性、書き込み可能性、実行可能性をそれぞれテストします。
- os.chdir(path)
現在の作業ディレクトリをパスに変更します。
この関数は、ファイル記述子の指定をサポートできます。 記述子は、開いているファイルではなく、開いているディレクトリを参照する必要があります。
バージョン3.3の新機能:一部のプラットフォームでパスをファイル記述子として指定するためのサポートが追加されました。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.chflags(path, flags, *, follow_symlinks=True)
パスのフラグを数値のフラグに設定します。 flags は、( stat モジュールで定義されているように)次の値の組み合わせ(ビット単位のOR)を取ることができます。
この関数は、シンボリックリンクをたどらないをサポートできます。
可用性:Unix。
バージョン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を数値の uid と gid に変更します。 IDの1つを変更しないままにするには、-1に設定します。
この関数は、ファイル記述子の指定、ディレクトリ記述子に関連するパス、およびシンボリックリンクに従わないをサポートできます。
数値IDに加えて名前を受け入れる高レベルの関数については、 shutil.chown()を参照してください。
可用性:Unix。
バージョン3.3の新機能: パス、および dir_fd および follow_symlinks 引数のオープンファイル記述子を指定するためのサポートが追加されました。
バージョン3.6で変更: パスのようなオブジェクトをサポートします。
- os.chroot(path)
現在のプロセスのルートディレクトリをパスに変更します。
可用性:Unix。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.fchdir(fd)
現在の作業ディレクトリを、ファイル記述子 fd で表されるディレクトリに変更します。 記述子は、開いているファイルではなく、開いているディレクトリを参照する必要があります。 Python 3.3以降、これは
os.chdir(fd)
と同等です。可用性:Unix。
- os.getcwd()
- 現在の作業ディレクトリを表す文字列を返します。
- os.getcwdb()
- 現在の作業ディレクトリを表すバイト文字列を返します。
- os.lchflags(path, flags)
path のフラグを chflags()のように数値の flags に設定しますが、シンボリックリンクには従わないでください。 Python 3.3以降、これは
os.chflags(path, flags, follow_symlinks=False)
と同等です。可用性:Unix。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.lchmod(path, mode)
パスのモードを数値モードに変更します。 パスがシンボリックリンクの場合、これはターゲットではなくシンボリックリンクに影響します。 mode の可能な値については、 chmod()のドキュメントを参照してください。 Python 3.3以降、これは
os.chmod(path, mode, follow_symlinks=False)
と同等です。可用性:Unix。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.lchown(path, uid, gid)
パスの所有者とグループIDを数値の uid と gid に変更します。 この関数はシンボリックリンクをたどりません。 Python 3.3以降、これは
os.chown(path, uid, gid, follow_symlinks=False)
と同等です。可用性:Unix。
バージョン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 の指定をサポートして、ディレクトリ記述子に関連するパス、およびシンボリックリンクに従わないを提供できます。
可用性:Unix、Windows。
バージョン3.2で変更: Windowsサポートが追加されました。
バージョン3.3の新機能: src_dir_fd 、 dst_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で変更: src および dst のパスのようなオブジェクトを受け入れます。
- 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()の説明を参照してください。
exit_ok が
False
(デフォルト)の場合、ターゲットディレクトリがすでに存在すると、 OSError が発生します。ノート
makedirs()は、作成するパス要素に pardir が含まれている場合、混乱します(例: UNIXシステムでは「..」)。
この関数は、UNCパスを正しく処理します。
バージョン3.2の新機能: exit_ok パラメーター。
バージョン3.4.1で変更: Python 3.4.1より前では、 exit_ok が
True
であり、ディレクトリが存在する場合、 makedirs()は引き続き mode が既存のディレクトリのモードと一致しなかった場合、エラーが発生します。 この動作を安全に実装することは不可能だったため、Python3.4.1で削除されました。 :issue: `21082` を参照してください。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.mkfifo(path, mode=0o666, *, dir_fd=None)
数値モードモードでパスという名前のFIFO(名前付きパイプ)を作成します。 現在のumask値は、最初にモードからマスクアウトされます。
この関数は、ディレクトリ記述子に関連するパスもサポートできます。
FIFOは、通常のファイルのようにアクセスできるパイプです。 FIFOは、削除されるまで存在します(たとえば、 os.unlink()を使用)。 一般に、FIFOは、「クライアント」タイプと「サーバー」タイプのプロセス間のランデブーとして使用されます。サーバーは読み取り用にFIFOを開き、クライアントは書き込み用にFIFOを開きます。 mkfifo()はFIFOを開かないことに注意してください—ランデブーポイントを作成するだけです。
可用性:Unix。
バージョン3.3の新機能: dir_fd 引数。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.mknod(path, mode=0o600, device=0, *, dir_fd=None)
path という名前のファイルシステムノード(ファイル、デバイス特殊ファイル、または名前付きパイプ)を作成します。 mode は、使用するアクセス許可と作成するノードのタイプの両方を指定し、
stat.S_IFREG
、stat.S_IFCHR
、 [X154Xのいずれかと組み合わせます(ビットごとのOR) ]、およびstat.S_IFIFO
(これらの定数は stat で使用できます)。stat.S_IFCHR
およびstat.S_IFBLK
の場合、 device は新しく作成されたデバイス特殊ファイルを定義します(おそらく os.makedev()を使用)。それ以外の場合は無視されます。この関数は、ディレクトリ記述子に関連するパスもサポートできます。
可用性:Unix。
バージョン3.3の新機能: dir_fd 引数。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.major(device)
- 未加工のデバイス番号からデバイスのメジャー番号を抽出します(通常、
stat
のst_dev
またはst_rdev
フィールド)。
- os.minor(device)
- 未加工のデバイス番号からデバイスのマイナー番号を抽出します(通常、
stat
のst_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
に含まれていても、 OSError は errno.EINVALで発生します。エラー番号は。この関数は、ファイル記述子の指定をサポートできます。
可用性:Unix。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.pathconf_names
pathconf()および fpathconf()によって受け入れられるディクショナリマッピング名を、ホストオペレーティングシステムによってそれらの名前に定義された整数値にマッピングします。 これは、システムに認識されている名前のセットを判別するために使用できます。
可用性:Unix。
- os.readlink(path, *, dir_fd=None)
シンボリックリンクが指すパスを表す文字列を返します。 結果は、絶対パス名または相対パス名のいずれかになります。 相対パスの場合は、
os.path.join(os.path.dirname(path), result)
を使用して絶対パス名に変換できます。path が文字列オブジェクトの場合( PathLike インターフェイスを介して直接的または間接的に)、結果も文字列オブジェクトになり、呼び出しによってUnicodeDecodeErrorが発生する可能性があります。 path がバイトオブジェクト(直接または間接)の場合、結果はバイトオブジェクトになります。
この関数は、ディレクトリ記述子に関連するパスもサポートできます。
可用性:Unix、Windows
バージョン3.2で変更: Windows 6.0(Vista)シンボリックリンクのサポートが追加されました。
バージョン3.3の新機能: dir_fd 引数。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.remove(path, *, dir_fd=None)
ファイルパスを削除(削除)します。 path がディレクトリの場合、 OSError が発生します。 rmdir()を使用してディレクトリを削除します。
この関数は、ディレクトリ記述子に関連するパスをサポートできます。
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 が発生します。 Unixでは、 dst が存在し、ファイルである場合、ユーザーに権限があれば、サイレントに置き換えられます。 src と dst が異なるファイルシステム上にある場合、一部のUnixフレーバーで操作が失敗することがあります。 成功した場合、名前の変更は不可分操作になります(これはPOSIX要件です)。 Windowsでは、 dst が既に存在する場合、ファイルであっても OSError が発生します。
この関数は、 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 および new の path-likeオブジェクトを受け入れます。
- os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
ファイルまたはディレクトリの名前を src から dst に変更します。 dst がディレクトリの場合、 OSError が発生します。 dst が存在し、ファイルである場合、ユーザーに権限があれば、サイレントに置き換えられます。 src と dst が異なるファイルシステム上にある場合、操作が失敗する可能性があります。 成功した場合、名前の変更は不可分操作になります(これはPOSIX要件です)。
この関数は、 src_dir_fd および/または dst_dir_fd の指定をサポートして、ディレクトリ記述子に関連するパスを提供できます。
バージョン3.3の新機能。
バージョン3.6で変更: src および dst のパスのようなオブジェクトを受け入れます。
- os.rmdir(path, *, dir_fd=None)
ディレクトリパスを削除(削除)します。 ディレクトリが空の場合にのみ機能します。それ以外の場合は、 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 がデストラクタで発行されます。
この関数は、パスのようなオブジェクトを受け入れます。
- class os.DirEntry
scandir()によって生成され、ディレクトリエントリのファイルパスおよびその他のファイル属性を公開するオブジェクト。
scandir()は、追加のシステムコールを行わずに、この情報を可能な限り提供します。
stat()
またはlstat()
システムコールが行われると、os.DirEntry
オブジェクトは結果をキャッシュします。os.DirEntry
インスタンスは、長期間有効なデータ構造に格納することを目的としていません。 ファイルのメタデータが変更されていることがわかっている場合、または scandir()を呼び出してから長い時間が経過している場合は、os.stat(entry.path)
を呼び出して最新の情報を取得してください。os.DirEntry
メソッドはオペレーティングシステムコールを実行できるため、 OSError も発生する可能性があります。 エラーを非常にきめ細かく制御する必要がある場合は、os.DirEntry
メソッドの1つを呼び出すときに OSError をキャッチし、必要に応じて処理できます。パスのようなオブジェクトとして直接使用できるように、
os.DirEntry
は PathLike インターフェイスを実装しています。os.DirEntry
インスタンスの属性とメソッドは次のとおりです。- name
scandir() path 引数に関連するエントリのベースファイル名。
name 属性は、 scandir() path 引数のタイプが
bytes
および [の場合、bytes
になります。 X124X]それ以外の場合。 fsdecode()を使用して、バイトファイル名をデコードします。
- path
エントリのフルパス名:
os.path.join(scandir_path, entry.name)
と同等です。ここで、 scandir_path は scandir() path 引数です。 scandir() path 引数が絶対である場合にのみ、パスは絶対です。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_symlinks が
False
の場合、このエントリがディレクトリ(シンボリックリンクをたどらない)の場合にのみTrue
を返します。 エントリが他の種類のファイルである場合、またはエントリがもう存在しない場合は、False
を返します。結果は
os.DirEntry
オブジェクトにキャッシュされ、 follow_symlinksTrue
とFalse
に別々のキャッシュがあります。 os.stat()を stat.S_ISDIR()と一緒に呼び出して、最新の情報を取得します。最初のキャッシュされていない呼び出しでは、ほとんどの場合、システム呼び出しは必要ありません。 具体的には、非シンボリックリンクの場合、
dirent.d_type == DT_UNKNOWN
を返すネットワークファイルシステムなどの特定のUnixファイルシステムを除いて、WindowsもUnixもシステムコールを必要としません。 エントリがシンボリックリンクの場合、 follow_symlinks がFalse
でない限り、シンボリックリンクをたどるシステムコールが必要になります。このメソッドは、 PermissionError などの OSError を発生させる可能性がありますが、 FileNotFoundError はキャッチされ、発生しません。
- is_file(\*, follow_symlinks=True)
このエントリがファイルまたはファイルを指すシンボリックリンクである場合は、
True
を返します。 エントリがディレクトリまたはその他のファイル以外のエントリであるか、それを指している場合、またはそれがもう存在しない場合は、False
を返します。follow_symlinks が
False
の場合、このエントリがファイルである場合にのみ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_symlinks が
True
であり、エントリがシンボリックリンクである場合にのみ、システムコールが必要です。Windowsでは、 stat_result の
st_ino
、st_dev
、およびst_nlink
属性は常にゼロに設定されます。 os.stat()を呼び出して、これらの属性を取得します。結果は
os.DirEntry
オブジェクトにキャッシュされ、 follow_symlinksTrue
とFalse
に別々のキャッシュがあります。 os.stat()を呼び出して、最新の情報を取得します。
os.DirEntry
と pathlib.Path のいくつかの属性とメソッドの間には適切な対応関係があることに注意してください。 特に、name
属性は、is_dir()
、is_file()
、is_symlink()
、およびstat()
メソッドと同じ意味を持ちます。バージョン3.5の新機能。
- os.stat(path, \*, dir_fd=None, follow_symlinks=True)
ファイルまたはファイル記述子のステータスを取得します。 指定されたパスで
stat()
システムコールと同等の処理を実行します。 path は、文字列またはバイトとして( PathLike インターフェイスを介して直接的または間接的に)、または開いているファイル記述子として指定できます。 stat_result オブジェクトを返します。この関数は通常、シンボリックリンクに従います。 シンボリックリンクを統計するには、引数
follow_symlinks=False
を追加するか、 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
バージョン3.3の新機能: dir_fd および follow_symlinks 引数を追加し、パスの代わりにファイル記述子を指定しました。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- class os.stat_result
属性が
stat
構造体のメンバーにほぼ対応するオブジェクト。 os.stat()、 os.fstat()、 os.lstat()の結果に使用されます。属性:
- st_mode
ファイルモード:ファイルタイプとファイルモードビット(許可)。
- st_ino
プラットフォームに依存しますが、ゼロ以外の場合は、
st_dev
の特定の値に対してファイルを一意に識別します。 通常:Unixのiノード番号、
Windowsのファイルインデックス
- 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での作成時間。ナノ秒単位で整数として表されます。
stat_float_times()関数も参照してください。
ノート
st_atime 、 st_mtime 、および st_ctime 属性の正確な意味と解像度は、オペレーティングシステムとファイルシステムによって異なります。 たとえば、FATまたはFAT32ファイルシステムを使用するWindowsシステムでは、 st_mtime の解像度は2秒で、 st_atime の解像度は1日のみです。 詳細については、オペレーティングシステムのドキュメントを参照してください。
同様に、 st_atime_ns 、 st_mtime_ns 、および st_ctime_ns は常にナノ秒で表されますが、多くのシステムはナノ秒の精度を提供しません。 ナノ秒の精度を提供するシステムでは、 st_atime 、 st_mtime 、および st_ctime を格納するために使用される浮動小数点オブジェクトは、すべてを保持できません。少し不正確になります。 正確なタイムスタンプが必要な場合は、常に st_atime_ns 、 st_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
ファイル作成の時間。
Mac OSシステムでは、次の属性も使用できる場合があります。
- st_rsize
ファイルの実際のサイズ。
- st_creator
ファイルの作成者。
- st_type
ファイルタイプ。
Windowsシステムでは、次の属性も使用できます。
- st_file_attributes
Windowsファイル属性:
GetFileInformationByHandle()
によって返されるBY_HANDLE_FILE_INFORMATION
構造のdwFileAttributes
メンバー。 stat モジュールのFILE_ATTRIBUTE_*
定数を参照してください。
標準モジュール stat は、
stat
構造から情報を抽出するのに役立つ関数と定数を定義します。 (Windowsでは、一部の項目はダミー値で埋められます。)下位互換性のために、 stat_result インスタンスは、
stat
構造体の最も重要な(そして移植可能な)メンバーを st_modeの順序で与える少なくとも10個の整数のタプルとしてもアクセスできます。 、 st_ino 、 st_dev 、 st_nlink 、 st_uid 、 st_gid 、 st_size [X320X ]、 st_atime 、 st_mtime 、 st_ctime 。 一部の実装では、最後にさらに項目が追加される場合があります。 古いPythonバージョンとの互換性のために、 stat_result にタプルとしてアクセスすると、常に整数が返されます。バージョン3.3の新機能: st_atime_ns 、 st_mtime_ns 、および st_ctime_ns メンバーを追加しました。
バージョン3.5の新機能: Windowsに st_file_attributes メンバーを追加しました。
バージョン3.5で変更: Windowsは、使用可能な場合、ファイルインデックスを st_ino として返すようになりました。
- os.stat_float_times([newvalue])
stat_result がタイムスタンプをfloatオブジェクトとして表すかどうかを判別します。 newvalue が
True
の場合、 stat()への今後の呼び出しはfloatを返し、False
の場合、将来の呼び出しはintを返します。 newvalue を省略した場合は、現在の設定を返します。古いPythonバージョンとの互換性のために、 stat_result にタプルとしてアクセスすると、常に整数が返されます。
Pythonはデフォルトでfloat値を返すようになりました。 浮動小数点タイムスタンプで正しく機能しないアプリケーションは、この関数を使用して古い動作を復元できます。
タイムスタンプの解像度(つまり、可能な最小の割合)は、システムによって異なります。 一部のシステムは2番目の解像度のみをサポートします。 これらのシステムでは、分数は常にゼロになります。
この設定は、 __ main __ モジュールのプログラム起動時にのみ変更することをお勧めします。 ライブラリはこの設定を変更しないでください。 浮動小数点タイムスタンプが処理されると正しく機能しないライブラリをアプリケーションが使用する場合、このアプリケーションは、ライブラリが修正されるまでこの機能をオフにする必要があります。
バージョン3.3以降非推奨。
- os.statvfs(path)
指定されたパスで
statvfs()
システムコールを実行します。 戻り値は、属性が指定されたパス上のファイルシステムを記述し、statvfs
構造のメンバー、つまりf_bsize
、f_frsize
、f_blocks
、f_bfree
、f_bavail
、f_files
、f_ffree
、f_favail
、f_flag
、 [ X262X]。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を更新)。この関数は、ファイル記述子の指定をサポートできます。
可用性:Unix。
バージョン3.2で変更:
ST_RDONLY
およびST_NOSUID
定数が追加されました。バージョン3.3の新機能: パスのオープンファイル記述子を指定するためのサポートが追加されました。
バージョン3.4で変更:
ST_NODEV
、ST_NOEXEC
、ST_SYNCHRONOUS
、ST_MANDLOCK
、ST_WRITE
、ST_APPEND
、ST_IMMUTABLE
、ST_NOATIME
、ST_NODIRATIME
、およびST_RELATIME
定数が追加されました。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.supports_dir_fd
os モジュールのどの関数が dir_fd パラメーターの使用を許可するかを示す Set オブジェクト。 プラットフォームが異なれば提供される機能も異なり、あるプラットフォームで機能する可能性のあるオプションが別のプラットフォームではサポートされない場合があります。 一貫性を保つために、 dir_fd をサポートする関数では常にパラメーターを指定できますが、機能が実際に使用できない場合は例外が発生します。
特定の関数がその dir_fd パラメーターの使用を許可するかどうかを確認するには、
supports_dir_fd
でin
演算子を使用します。 例として、この式は、 os.stat()の dir_fd パラメーターがローカルで使用可能かどうかを判別します。os.stat in os.supports_dir_fd
現在、 dir_fd パラメーターはUnixプラットフォームでのみ機能します。 それらのどれもWindowsで動作しません。
バージョン3.3の新機能。
- os.supports_effective_ids
os モジュールのどの関数が os.access()の effective_ids パラメーターの使用を許可するかを示す Set オブジェクト。 ローカルプラットフォームがサポートしている場合、コレクションには os.access()が含まれます。サポートされていない場合、コレクションは空になります。
os.access()の effective_ids パラメーターを使用できるかどうかを確認するには、次のように
supports_effective_ids
でin
演算子を使用します。os.access in os.supports_effective_ids
現在、 effective_ids はUnixプラットフォームでのみ機能します。 Windowsでは動作しません。
バージョン3.3の新機能。
- os.supports_fd
os モジュールのどの関数が path パラメーターをオープンファイル記述子として指定できるかを示す Set オブジェクト。 プラットフォームが異なれば提供される機能も異なり、あるプラットフォームで機能する可能性のあるオプションが別のプラットフォームではサポートされない場合があります。 一貫性を保つために、 fd をサポートする関数では常にパラメーターを指定できますが、機能が実際に使用できない場合は例外が発生します。
特定の関数がその path パラメーターにオープンファイル記述子を指定できるかどうかを確認するには、
supports_fd
でin
演算子を使用します。 例として、この式は、ローカルプラットフォームで呼び出されたときに os.chdir()が開いているファイル記述子を受け入れるかどうかを決定します。os.chdir in os.supports_fd
バージョン3.3の新機能。
- os.supports_follow_symlinks
os モジュールのどの関数が follow_symlinks パラメーターの使用を許可するかを示す Set オブジェクト。 プラットフォームが異なれば提供される機能も異なり、あるプラットフォームで機能する可能性のあるオプションが別のプラットフォームではサポートされない場合があります。 一貫性を保つために、 follow_symlinks をサポートする関数では常にパラメーターを指定できますが、機能が実際に使用できない場合は例外が発生します。
特定の関数がその follow_symlinks パラメーターの使用を許可するかどうかを確認するには、
supports_follow_symlinks
でin
演算子を使用します。 例として、この式は、 os.stat()の follow_symlinks パラメーターがローカルで使用可能かどうかを判別します。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_directory が
True
の場合はシンボリックリンクがディレクトリとして作成され、それ以外の場合はファイルシンボリックリンク(デフォルト)が作成されます。 Windows以外のプラットフォームでは、 target_is_directory は無視されます。シンボリックリンクのサポートは、Windows 6.0(Vista)で導入されました。 symlink()は、6.0より前のWindowsバージョンで NotImplementedError を発生させます。
この関数は、ディレクトリ記述子に関連するパスをサポートできます。
ノート
Windowsでは、シンボリックリンクを正常に作成するには、 SeCreateSymbolicLinkPrivilege が必要です。 この権限は通常、通常のユーザーには付与されませんが、管理者レベルに権限を昇格できるアカウントで利用できます。 特権を取得するか、管理者としてアプリケーションを実行することは、シンボリックリンクを正常に作成する方法です。
OSError は、特権のないユーザーが関数を呼び出すと発生します。
可用性:Unix、Windows。
バージョン3.2で変更: Windows 6.0(Vista)シンボリックリンクのサポートが追加されました。
バージョン3.3の新機能: dir_fd 引数が追加され、Windows以外のプラットフォームで target_is_directory が許可されるようになりました。
バージョン3.6で変更: src および dst のパスのようなオブジェクトを受け入れます。
- os.sync()
すべてをディスクに強制的に書き込みます。
可用性:Unix。
バージョン3.3の新機能。
- os.truncate(path, length)
パスに対応するファイルを切り捨てて、サイズが最大長さバイトになるようにします。
この関数は、ファイル記述子の指定をサポートできます。
可用性:Unix、Windows。
バージョン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()は、 times と ns の2つのオプションパラメーターを取ります。 これらはパスに設定された時間を指定し、次のように使用されます。
ns を指定する場合は、
(atime_ns, mtime_ns)
の形式の2タプルである必要があります。ここで、各メンバーはナノ秒を表す整数です。times が
None
でない場合は、(atime, mtime)
の形式の2タプルである必要があります。各メンバーは、秒を表すintまたはfloatです。times が
None
で、 ns が指定されていない場合、これはns=(atime_ns, mtime_ns)
を指定することと同じです。
times と ns の両方にタプルを指定するとエラーになります。
パスにディレクトリを指定できるかどうかは、オペレーティングシステムがディレクトリをファイルとして実装するかどうかによって異なります(たとえば、Windowsでは実装されません)。 ここで設定した正確な時刻は、オペレーティングシステムがアクセス時刻と変更時刻を記録する解像度によっては、後続の stat()呼び出しによって返されない場合があることに注意してください。 stat()を参照してください。 正確な時刻を保持する最良の方法は、 os.stat()結果オブジェクトの st_atime_ns フィールドと st_mtime_ns フィールドを ns で使用することです。 ]パラメータを utime に設定します。
この関数は、ファイル記述子の指定、ディレクトリ記述子に関連するパス、およびシンボリックリンクに従わないをサポートできます。
バージョン3.3の新機能: パス、および dir_fd 、 follow_symlinks 、およびのオープンファイル記述子を指定するためのサポートが追加されましたns パラメータ。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.walk(top, topdown=True, onerror=None, followlinks=False)
ツリーをトップダウンまたはボトムアップでウォークして、ディレクトリツリーにファイル名を生成します。 ディレクトリ top ( top 自体を含む)をルートとするツリー内のディレクトリごとに、3タプル
(dirpath, dirnames, filenames)
が生成されます。dirpath は文字列であり、ディレクトリへのパスです。 dirnames は、 dirpath 内のサブディレクトリの名前のリストです(
'.'
と'..'
を除く)。 filenames は、 dirpath 内の非ディレクトリファイルの名前のリストです。 リスト内の名前にはパスコンポーネントが含まれていないことに注意してください。 dirpath 内のファイルまたはディレクトリへのフルパス( top で始まる)を取得するには、os.path.join(dirpath, name)
を実行します。オプションの引数 topdown が
True
であるか指定されていない場合、ディレクトリのトリプルは、そのサブディレクトリのトリプルの前に生成されます(ディレクトリはトップダウンで生成されます)。 topdown がFalse
の場合、ディレクトリのトリプルは、そのすべてのサブディレクトリのトリプルの後に生成されます(ディレクトリはボトムアップで生成されます)。 topdown の値に関係なく、サブディレクトリのリストは、ディレクトリとそのサブディレクトリのタプルが生成される前に取得されます。topdown が
True
の場合、呼び出し元は dirnames リストをインプレースで(おそらく del またはスライス割り当てを使用して)変更でき、[X148X ] walk()は、名前が dirnames に残っているサブディレクトリにのみ再帰します。 これを使用して、検索を削除したり、特定の訪問順序を課したり、呼び出し元が walk()を再開する前に、呼び出し元が作成または名前変更したディレクトリについて walk()に通知したりすることもできます。 topdown がFalse
のときに dirnames を変更しても、ウォークの動作には影響しません。ボトムアップモードでは、 dirnames のディレクトリが dirpath 自体が生成される前に生成されます。デフォルトでは、 scandir()呼び出しからのエラーは無視されます。 オプションの引数 onerror が指定されている場合、それは関数である必要があります。 OSError インスタンスという1つの引数で呼び出されます。 エラーを報告してウォークを続行するか、例外を発生させてウォークを中止することができます。 ファイル名は、例外オブジェクトの
filename
属性として使用できることに注意してください。デフォルトでは、 walk()は、ディレクトリに解決されるシンボリックリンクに移動しません。 followlinks を
True
に設定して、シンボリックリンクをサポートするシステムで、シンボリックリンクが指すディレクトリにアクセスします。ノート
followlinks を
True
に設定すると、リンクがそれ自体の親ディレクトリを指している場合、無限再帰が発生する可能性があることに注意してください。 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
をサポートする点が異なります。dirpath 、 dirnames 、 filenames は、 walk()出力と同じであり、 dirfd は参照するファイル記述子です。ディレクトリ dirpath に移動します。
この関数は、ディレクトリ記述子およびシンボリックリンクに従わないに関連するパスを常にサポートします。 ただし、他の関数とは異なり、 follow_symlinks の fwalk()のデフォルト値は
False
であることに注意してください。この例では、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)
可用性:Unix。
バージョン3.3の新機能。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
16.1.5.1。 Linux拡張属性
バージョン3.3の新機能。
これらの機能はすべてLinuxでのみ使用できます。
- os.getxattr(path, attribute, *, follow_symlinks=True)
パスの拡張ファイルシステム属性属性の値を返します。 attribute は、bytesまたはstr( PathLike インターフェースを介して直接的または間接的に)にすることができます。 strの場合は、ファイルシステムエンコーディングでエンコードされます。
この関数は、ファイル記述子の指定およびシンボリックリンクに従わないをサポートできます。
バージョン3.6で変更: path および attribute の path-likeオブジェクトを受け入れます。
- os.listxattr(path=None, *, follow_symlinks=True)
パスの拡張ファイルシステム属性のリストを返します。 リスト内の属性は、ファイルシステムエンコーディングでデコードされた文字列として表されます。 path が
None
の場合、 listxattr()は現在のディレクトリを調べます。この関数は、ファイル記述子の指定およびシンボリックリンクに従わないをサポートできます。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.removexattr(path, attribute, *, follow_symlinks=True)
拡張ファイルシステム属性属性をパスから削除します。 attribute はbytesまたはstrである必要があります( PathLike インターフェースを介して直接的または間接的に)。 文字列の場合は、ファイルシステムエンコーディングでエンコードされます。
この関数は、ファイル記述子の指定およびシンボリックリンクに従わないをサポートできます。
バージョン3.6で変更: path および attribute の path-likeオブジェクトを受け入れます。
- os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
パスの拡張ファイルシステム属性属性を値に設定します。 attribute は、NULが埋め込まれていないバイトまたはstrである必要があります( PathLike インターフェイスを介して直接的または間接的に)。 strの場合は、ファイルシステムエンコーディングでエンコードされます。 フラグは、 XATTR_REPLACE または XATTR_CREATE の場合があります。 XATTR_REPLACE が指定されていて、属性が存在しない場合、
EEXISTS
が発生します。 XATTR_CREATE が指定されていて、属性がすでに存在する場合、属性は作成されず、ENODATA
が発生します。この関数は、ファイル記述子の指定およびシンボリックリンクに従わないをサポートできます。
ノート
2.6.39未満のLinuxカーネルバージョンのバグにより、一部のファイルシステムでflags引数が無視されていました。
バージョン3.6で変更: path および attribute の path-likeオブジェクトを受け入れます。
- os.XATTR_SIZE_MAX
- 拡張属性の値の最大サイズは次のとおりです。 現在、これはLinuxでは64KiBです。
- os.XATTR_CREATE
- これは、 setxattr()のflags引数の可能な値です。 これは、操作で属性を作成する必要があることを示しています。
- os.XATTR_REPLACE
- これは、 setxattr()のflags引数の可能な値です。 これは、操作で既存の属性を置き換える必要があることを示しています。
16.1.6。 プロセス管理
これらの関数は、プロセスを作成および管理するために使用できます。
さまざまな exec * 関数は、プロセスにロードされた新しいプログラムの引数のリストを取ります。 いずれの場合も、これらの引数の最初のものは、ユーザーがコマンドラインで入力した引数としてではなく、独自の名前として新しいプログラムに渡されます。 Cプログラマーの場合、これはプログラムのmain()
に渡されるargv[0]
です。 たとえば、os.execv('/bin/echo', ['foo', 'bar'])
はbar
のみを標準出力に出力します。 foo
は無視されているように見えます。
- os.abort()
- 現在のプロセスへの
SIGABRT
シグナルを生成します。 Unixでは、デフォルトの動作はコアダンプを生成することです。 Windowsでは、プロセスはすぐに3
の終了コードを返します。 この関数を呼び出しても、 signal.signal()でSIGABRT
に登録されているPythonシグナルハンドラーは呼び出されないことに注意してください。
- 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 が発生します。
可用性:Unix、Windows。
バージョン3.3の新機能: execve()のパスのオープンファイル記述子を指定するためのサポートが追加されました。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os._exit(n)
クリーンアップハンドラーを呼び出したり、stdioバッファーをフラッシュしたりせずに、ステータス n でプロセスを終了します。
以下の終了コードが定義されており、 _exit()で使用できますが、必須ではありません。 これらは通常、メールサーバーの外部コマンド配信プログラムなど、Pythonで記述されたシステムプログラムに使用されます。
ノート
いくつかのバリエーションがあるため、これらの一部はすべてのUnixプラットフォームで使用できるとは限りません。 これらの定数は、基盤となるプラットフォームによって定義される場所で定義されます。
- os.EX_OK
エラーが発生しなかったことを意味する終了コード。
可用性:Unix。
- os.EX_USAGE
間違った数の引数が指定された場合など、コマンドが誤って使用されたことを意味する終了コード。
可用性:Unix。
- os.EX_DATAERR
入力データが正しくないことを意味する終了コード。
可用性:Unix。
- os.EX_NOINPUT
入力ファイルが存在しないか、読み取り可能ではなかったことを意味する終了コード。
可用性:Unix。
- os.EX_NOUSER
指定されたユーザーが存在しなかったことを意味する終了コード。
可用性:Unix。
- os.EX_NOHOST
指定されたホストが存在しなかったことを意味する終了コード。
可用性:Unix。
- os.EX_UNAVAILABLE
必要なサービスが利用できないことを意味する終了コード。
可用性:Unix。
- os.EX_SOFTWARE
内部ソフトウェアエラーが検出されたことを意味する終了コード。
可用性:Unix。
- os.EX_OSERR
パイプをフォークまたは作成できないなど、オペレーティングシステムエラーが検出されたことを意味する終了コード。
可用性:Unix。
- os.EX_OSFILE
一部のシステムファイルが存在しなかったか、開くことができなかったか、またはその他の種類のエラーが発生したことを意味する終了コード。
可用性:Unix。
- os.EX_CANTCREAT
ユーザー指定の出力ファイルを作成できなかったことを意味する終了コード。
可用性:Unix。
- os.EX_IOERR
一部のファイルでI / Oの実行中にエラーが発生したことを意味する終了コード。
可用性:Unix。
- os.EX_TEMPFAIL
一時的な障害が発生したことを意味する終了コード。 これは、再試行可能な操作中にネットワーク接続を確立できなかったなど、実際にはエラーではない可能性があることを示しています。
可用性:Unix。
- os.EX_PROTOCOL
プロトコル交換が違法、無効、または理解されていないことを意味する終了コード。
可用性:Unix。
- os.EX_NOPERM
操作を実行するための十分な権限がなかったことを意味する終了コード(ただし、ファイルシステムの問題を対象としていません)。
可用性:Unix。
- os.EX_CONFIG
何らかの構成エラーが発生したことを意味する終了コード。
可用性:Unix。
- os.EX_NOTFOUND
「エントリが見つかりませんでした」などの意味の終了コード。
可用性:Unix。
- os.fork()
子プロセスをforkします。 子に
0
を返し、親に子のプロセスIDを返します。 エラーが発生した場合、 OSError が発生します。FreeBSD <= 6.3やCygwinを含む一部のプラットフォームでは、スレッドからfork()を使用するときに既知の問題があることに注意してください。
警告
fork()でSSLモジュールを使用するアプリケーションについては、 ssl を参照してください。
可用性:Unix。
- os.forkpty()
新しい疑似端末を子の制御端末として使用して、子プロセスをforkします。
(pid, fd)
のペアを返します。ここで、 pid は子の0
、新しい子のプロセスIDは親、 fd はファイルです。疑似端末のマスターエンドの記述子。 より移植性の高いアプローチについては、 pty モジュールを使用してください。 エラーが発生した場合、 OSError が発生します。可用性:Unixのいくつかのフレーバー。
- 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 に送信します。
可用性:Unix。
- os.nice(increment)
プロセスの「素晴らしさ」に increment を追加します。 新しい優しさを返します。
可用性:Unix。
- os.plock(op)
プログラムセグメントをメモリにロックします。 op (
<sys/lock.h>
で定義)の値によって、ロックされるセグメントが決まります。可用性:Unix。
- os.popen(cmd, mode='r', buffering=- 1)
コマンド cmd との間のパイプを開きます。 戻り値はパイプに接続されたオープンファイルオブジェクトであり、モードが
'r'
(デフォルト)または'w'
のどちらであるかに応じて読み取りまたは書き込みが可能です。 buffering 引数は、組み込みの open()関数に対応する引数と同じ意味を持ちます。 返されたファイルオブジェクトは、バイトではなくテキスト文字列を読み書きします。close
メソッドは、サブプロセスが正常に終了した場合は None を返し、エラーが発生した場合はサブプロセスの戻りコードを返します。 POSIXシステムでは、戻りコードが正の場合、それは1バイト左シフトされたプロセスの戻り値を表します。 戻りコードが負の場合、プロセスは、戻りコードの否定値によって与えられたシグナルによって終了しました。 (たとえば、サブプロセスが強制終了された場合、戻り値は- signal.SIGKILL
になる可能性があります。)Windowsシステムでは、戻り値には子プロセスからの符号付き整数の戻りコードが含まれます。これは、 subprocess.Popen を使用して実装されます。 サブプロセスを管理および通信するためのより強力な方法については、そのクラスのドキュメントを参照してください。
- 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 を実行します。
(サブプロセスモジュールは、新しいプロセスを生成してその結果を取得するためのより強力な機能を提供することに注意してください。これらの関数を使用するよりも、そのモジュールを使用することをお勧めします。 特に古い機能のサブプロセスモジュールセクションへの置き換えを確認してください。)
mode が P_NOWAIT の場合、この関数は新しいプロセスのプロセスIDを返します。 mode が P_WAIT の場合、プロセスが正常に終了した場合はプロセスの終了コードを返します。
-signal
の場合、 signal はプロセスを強制終了したシグナルです。 。 Windowsでは、プロセスIDは実際にはプロセスハンドルになるため、 waitpid()関数で使用できます。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)
可用性:Unix、Windows。 spawnlp()、 spawnlpe()、 spawnvp()、 spawnvpe()はWindowsでは使用できません。 spawnle()および spawnve()は、Windowsではスレッドセーフではありません。 代わりにサブプロセスモジュールを使用することをお勧めします。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.P_NOWAIT
os.P_NOWAITO spawn * ファミリーの関数の mode パラメーターに指定できる値。 これらの値のいずれかが指定されている場合、
spawn*()
関数は、新しいプロセスが作成されるとすぐに戻り、プロセスIDが戻り値になります。可用性:Unix、Windows。
- os.P_WAIT
spawn * ファミリーの関数の mode パラメーターに指定できる値。 これが mode として指定されている場合、
spawn*()
関数は、新しいプロセスが完了するまで実行されず、実行が成功したプロセスの終了コード、または-signal
シグナルがプロセスを強制終了した場合。可用性:Unix、Windows。
- os.P_DETACH
os.P_OVERLAY spawn * ファミリーの関数の mode パラメーターに指定できる値。 これらは、上記のリストよりも移植性が低くなります。 P_DETACH は P_NOWAIT に似ていますが、新しいプロセスは呼び出し元プロセスのコンソールから切り離されています。 P_OVERLAY が使用されている場合、現在のプロセスが置き換えられます。 spawn * 関数は戻りません。
可用性:Windows。
- os.startfile(path[, operation])
関連するアプリケーションでファイルを開始します。
操作が指定されていないか
'open'
の場合、これはWindowsエクスプローラーでファイルをダブルクリックするか、 start コマンドの引数としてファイル名を指定するように機能します。対話型コマンドシェル:ファイルは、その拡張子が関連付けられているアプリケーション(存在する場合)で開かれます。別の操作が与えられるとき、それはファイルで何をすべきかを指定する「コマンド動詞」でなければなりません。 Microsoftによって文書化されている一般的な動詞は、
'print'
と'edit'
(ファイルで使用)、および'explore'
と'find'
(ディレクトリで使用)です。startfile()は、関連付けられたアプリケーションが起動されるとすぐに戻ります。 アプリケーションが閉じるのを待つオプションはなく、アプリケーションの終了ステータスを取得する方法もありません。 path パラメータは、現在のディレクトリを基準にしています。 絶対パスを使用する場合は、最初の文字がスラッシュ(
'/'
)でないことを確認してください。 基盤となるWin32ShellExecute()
関数は、機能している場合は機能しません。 os.path.normpath()関数を使用して、パスがWin32用に適切にエンコードされていることを確認します。インタプリタの起動オーバーヘッドを減らすために、Win32
ShellExecute()
関数は、この関数が最初に呼び出されるまで解決されません。 関数を解決できない場合、 NotImplementedError が発生します。可用性:Windows。
- os.system(command)
サブシェルでコマンド(文字列)を実行します。 これは、標準C関数
system()
を呼び出すことによって実装され、同じ制限があります。 sys.stdin などへの変更。 実行したコマンドの環境には反映されません。 コマンドが出力を生成すると、インタプリタの標準出力ストリームに送信されます。Unixでは、戻り値は wait()に指定された形式でエンコードされたプロセスの終了ステータスです。 POSIXはC
system()
関数の戻り値の意味を指定していないため、Python関数の戻り値はシステムに依存することに注意してください。Windowsの場合、戻り値はコマンドの実行後にシステムシェルによって返される値です。 シェルは、Windows環境変数
COMSPEC
によって指定されます。通常は cmd.exe であり、コマンド実行の終了ステータスを返します。 非ネイティブシェルを使用するシステムでは、シェルのドキュメントを参照してください。サブプロセスモジュールは、新しいプロセスを生成してその結果を取得するためのより強力な機能を提供します。 この関数を使用するよりも、そのモジュールを使用することをお勧めします。 いくつかの役立つレシピについては、サブプロセスドキュメントの古い関数のサブプロセスモジュールセクションへの置き換えを参照してください。
可用性:Unix、Windows。
- os.times()
現在のグローバル処理時間を返します。 戻り値は、次の5つの属性を持つオブジェクトです。
user
-ユーザー時間システム-システム時間
children_user
-すべての子プロセスのユーザー時間children_system
-すべての子プロセスのシステム時間elapsed
-過去の定点からリアルタイムで経過
下位互換性のために、このオブジェクトは
user
、システム、children_user
、children_system
、およびelapsed
を含む5タプルのように動作します。この順序で。Unixのマニュアルページ times(2)または対応するWindowsプラットフォームAPIのドキュメントを参照してください。 Windowsでは、
user
とシステムのみが認識されます。 他の属性はゼロです。可用性:Unix、Windows。
バージョン3.3で変更:戻り値のタイプがタプルから名前付き属性を持つタプルのようなオブジェクトに変更されました。
- os.wait()
子プロセスの完了を待ち、そのpidと終了ステータスの表示を含むタプルを返します。16ビットの数値。下位バイトはプロセスを強制終了した信号番号であり、上位バイトは終了ステータスです(信号の場合)。数はゼロです); コアファイルが作成された場合、下位バイトの上位ビットが設定されます。
可用性:Unix。
- os.waitid(idtype, id, options)
1つ以上の子プロセスが完了するのを待ちます。 idtype は、 P_PID 、 P_PGID 、または P_ALL のいずれかです。 id は、待機するpidを指定します。 options は、 WEXITED 、 WSTOPPED 、または WCONTINUED の1つ以上のORから構成され、さらに WNOHANGとORすることができます。 または WNOWAIT 。 戻り値は、
siginfo_t
構造に含まれるデータを表すオブジェクトです。つまり、si_pid
、si_uid
、si_signo
、si_status
、si_code
またはNone
( WNOHANG が指定されていて、待機状態の子がない場合)。可用性:Unix。
バージョン3.3の新機能。
- os.P_PID
os.P_PGID
os.P_ALL これらは、 waitid()の idtype の可能な値です。 これらは、 id の解釈方法に影響します。
可用性:Unix。
バージョン3.3の新機能。
- os.WEXITED
os.WSTOPPED
os.WNOWAIT waitid()の options で使用できるフラグで、待機する子シグナルを指定します。
可用性:Unix。
バージョン3.3の新機能。
- os.CLD_EXITED
os.CLD_DUMPED
os.CLD_TRAPPED
os.CLD_CONTINUED これらは、 waitid()によって返される結果の
si_code
の可能な値です。可用性:Unix。
バージョン3.3の新機能。
- os.waitpid(pid, options)
この関数の詳細は、UnixとWindowsで異なります。
Unixの場合:プロセスID pid で指定された子プロセスの完了を待ち、プロセスIDと終了ステータスの表示( wait()のようにエンコード)を含むタプルを返します。 呼び出しのセマンティクスは、整数 options の値の影響を受けます。これは、通常の操作では
0
である必要があります。pid が
0
より大きい場合、 waitpid()はその特定のプロセスのステータス情報を要求します。 pid が0
の場合、要求は現在のプロセスのプロセスグループ内の任意の子のステータスに対するものです。 pid が-1
の場合、要求は現在のプロセスのすべての子に関係します。 pid が-1
より小さい場合、プロセスグループ-pid
( pid の絶対値)内のすべてのプロセスのステータスが要求されます。OSError は、syscallが-1を返すと、errnoの値で発生します。
Windowsの場合:プロセスハンドル pid で指定されたプロセスの完了を待ち、 pid を含むタプルを返し、その終了ステータスを8ビット左にシフトします(シフトするとクロスプラットフォームで使用されます)関数のより簡単)。 pid が
0
以下の場合、Windowsでは特別な意味はなく、例外が発生します。 整数 options の値は効果がありません。 pid は、IDがわかっているプロセスを参照できますが、必ずしも子プロセスである必要はありません。 P_NOWAIT で呼び出された spawn * 関数は、適切なプロセスハンドルを返します。バージョン3.5で変更:システムコールが中断され、シグナルハンドラが例外を発生させない場合、関数は InterruptedError 例外を発生させる代わりに、システムコールを再試行するようになりました([X223Xを参照] ] PEP 475 (理論的根拠)。
- os.wait3(options)
waitpid()と同様ですが、プロセスID引数が指定されておらず、子のプロセスID、終了ステータスの表示、およびリソース使用状況情報を含む3要素のタプルが返されます。 リソースの使用情報の詳細については、 resource 。 getrusage()を参照してください。 オプション引数は、 waitpid()および wait4()に提供されるものと同じです。
可用性:Unix。
- os.wait4(pid, options)
waitpid()と同様ですが、子のプロセスID、終了ステータスの表示、およびリソース使用状況情報を含む3要素のタプルが返されます。 リソースの使用情報の詳細については、 resource 。 getrusage()を参照してください。 wait4()の引数は、 waitpid()に提供されている引数と同じです。
可用性:Unix。
- os.WNOHANG
waitpid()のオプションは、子プロセスのステータスがすぐに利用できない場合にすぐに戻ります。 この場合、関数は
(0, 0)
を返します。可用性:Unix。
- os.WCONTINUED
このオプションを使用すると、子プロセスのステータスが最後に報告されてからジョブ制御の停止から続行された場合に、子プロセスが報告されます。
可用性:一部のUnixシステム。
- os.WUNTRACED
このオプションを使用すると、子プロセスが停止しているが、停止してから現在の状態が報告されていない場合に、子プロセスが報告されます。
可用性:Unix。
次の関数は、 system()、 wait()、または waitpid()によって返されるプロセスステータスコードをパラメーターとして受け取ります。 これらは、プロセスの処理を決定するために使用できます。
- os.WCOREDUMP(status)
プロセスに対してコアダンプが生成された場合は
True
を返し、そうでない場合はFalse
を返します。可用性:Unix。
- os.WIFCONTINUED(status)
プロセスがジョブ制御停止から続行された場合は
True
を返し、それ以外の場合はFalse
を返します。可用性:Unix。
- os.WIFSTOPPED(status)
プロセスが停止している場合は
True
を返し、それ以外の場合はFalse
を返します。可用性:Unix。
- os.WIFSIGNALED(status)
シグナルが原因でプロセスが終了した場合は
True
を返し、それ以外の場合はFalse
を返します。可用性:Unix。
- os.WIFEXITED(status)
プロセスが exit(2)システムコールを使用して終了した場合は
True
を返し、それ以外の場合はFalse
を返します。可用性:Unix。
- os.WEXITSTATUS(status)
WIFEXITED(status)
がtrueの場合、整数パラメーターを exit(2)システムコールに返します。 それ以外の場合、戻り値は無意味です。可用性:Unix。
- os.WSTOPSIG(status)
プロセスを停止させたシグナルを返します。
可用性:Unix。
- os.WTERMSIG(status)
プロセスを終了させたシグナルを返します。
可用性:Unix。
16.1.7。 スケジューラへのインターフェース
これらの関数は、オペレーティングシステムによってプロセスに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つです。 param は sched_param インスタンスです。
- os.sched_getscheduler(pid)
- PID pid のプロセスのスケジューリングポリシーを返します。 pid が0の場合は、呼び出しプロセスを意味します。 結果は、上記のスケジューリングポリシー定数の1つです。
- os.sched_setparam(pid, param)
- PID pid を使用してプロセスのスケジューリングパラメータを設定します。 pid が0の場合は、呼び出しプロセスを意味します。 param は sched_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のセットを返します。
16.1.8。 その他のシステム情報
- os.confstr(name)
文字列値のシステム構成値を返します。 name は、取得する構成値を指定します。 定義されたシステム値の名前である文字列である可能性があります。 これらの名前は、多くの標準(POSIX、Unix 95、Unix 98など)で指定されています。 一部のプラットフォームでは、追加の名前も定義されています。 ホストオペレーティングシステムに認識されている名前は、
confstr_names
ディクショナリのキーとして指定されています。 そのマッピングに含まれていない構成変数の場合、 name の整数の受け渡しも受け入れられます。name で指定された構成値が定義されていない場合は、
None
が返されます。name が文字列であり、不明な場合、 ValueError が発生します。 name の特定の値がホストシステムでサポートされていない場合、
confstr_names
に含まれていても、 OSError は errno.EINVALで発生します。エラー番号は。可用性:Unix。
- os.confstr_names
confstr()によって受け入れられた名前を、ホストオペレーティングシステムによってそれらの名前に対して定義された整数値にマッピングする辞書。 これは、システムに認識されている名前のセットを判別するために使用できます。
可用性:Unix。
- os.cpu_count()
システム内のCPUの数を返します。 不明な場合は
None
を返します。この数は、現在のプロセスが使用できるCPUの数と同じではありません。 使用可能なCPUの数は
len(os.sched_getaffinity(0))
で取得できます。バージョン3.4の新機能。
- os.getloadavg()
過去1、5、および15分間に平均化されたシステム実行キュー内のプロセス数を返すか、負荷平均が取得できない場合は OSError を発生させます。
可用性:Unix。
- os.sysconf(name)
整数値のシステム構成値を返します。 name で指定された構成値が定義されていない場合は、
-1
が返されます。 confstr()の name パラメーターに関するコメントはここにも当てはまります。 既知の名前に関する情報を提供する辞書は、sysconf_names
によって提供されます。可用性:Unix。
- os.sysconf_names
sysconf()によって受け入れられた名前を、ホストオペレーティングシステムによってそれらの名前に対して定義された整数値にマッピングする辞書。 これは、システムに認識されている名前のセットを判別するために使用できます。
可用性:Unix。
次のデータ値は、パス操作操作をサポートするために使用されます。 これらはすべてのプラットフォームに対して定義されています。
パス名に対する高レベルの操作は、 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の新機能。
16.1.9。 乱数
- os.getrandom(size, flags=0)
最大サイズのランダムバイトを取得します。 この関数は、要求されたよりも少ないバイトを返すことができます。
これらのバイトは、ユーザースペースの乱数ジェネレーターをシードするため、または暗号化の目的で使用できます。
getrandom()
は、デバイスドライバーやその他の環境ノイズ源から収集されたエントロピーに依存しています。 大量のデータを不必要に読み取ると、/dev/random
および/dev/urandom
デバイスの他のユーザーに悪影響を及ぼします。flags引数は、 os.GRND_RANDOM および GRND_NONBLOCK の0個以上の値をORで結合できるビットマスクです。
Linux getrandom()のマニュアルページも参照してください。
可用性:Linux3.17以降。
バージョン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以降では、Cgetentropy()
関数が使用されるようになりました。 これらの関数は、内部ファイル記述子の使用を回避します。
- os.GRND_NONBLOCK
デフォルトでは、
/dev/random
から読み取る場合、 getrandom()は、使用可能なランダムバイトがない場合にブロックし、/dev/urandom
から読み取る場合、エントロピープールがまだない場合はブロックします。初期化されました。GRND_NONBLOCK フラグが設定されている場合、 getrandom()はこれらの場合にブロックせず、代わりに BlockingIOError を即座に発生させます。
バージョン3.6の新機能。
- os.GRND_RANDOM
このビットが設定されている場合、ランダムなバイトが
/dev/urandom
プールではなく/dev/random
プールから引き出されます。バージョン3.6の新機能。