sys —システム固有のパラメーターと機能
このモジュールは、インタプリタによって使用または維持されるいくつかの変数、およびインタプリタと強力に相互作用する関数へのアクセスを提供します。 いつでもご利用いただけます。
- sys.abiflags
Pythonが標準の
configure
スクリプトで構築されたPOSIXシステムでは、これには PEP 3149 で指定されたABIフラグが含まれます。バージョン3.8で変更:デフォルトのフラグが空の文字列になりました(pymallocの
m
フラグが削除されました)。バージョン3.2の新機能。
- sys.addaudithook(hook)
呼び出し可能な hook を、現在の(サブ)インタープリターのアクティブな監査フックのリストに追加します。
sys.audit()関数を使用して監査イベントが発生すると、各フックは、イベント名と引数のタプルで追加された順序で呼び出されます。 PySys_AddAuditHook()によって追加されたネイティブフックが最初に呼び出され、次に現在の(サブ)インタープリターに追加されたフックが続きます。 その後、フックはイベントをログに記録したり、例外を発生させて操作を中止したり、プロセスを完全に終了したりできます。
CPythonによって発生するすべてのイベントについては監査イベントテーブルを、元の設計の説明については PEP 578 を参照してください。
バージョン3.8の新機能。
バージョン3.8.1で変更: Exception から派生したが、 RuntimeError から派生した例外は抑制されなくなりました。
- sys.argv
Pythonスクリプトに渡されるコマンドライン引数のリスト。
argv[0]
はスクリプト名です(これがフルパス名であるかどうかはオペレーティングシステムによって異なります)。 インタプリタの -c コマンドラインオプションを使用してコマンドを実行した場合、argv[0]
は文字列'-c'
に設定されます。 スクリプト名がPythonインタープリターに渡されなかった場合、argv[0]
は空の文字列です。標準入力、またはコマンドラインで指定されたファイルのリストをループするには、 fileinput モジュールを参照してください。
ノート
Unixでは、コマンドライン引数はOSからバイト単位で渡されます。 Pythonは、ファイルシステムエンコーディングと「surrogateescape」エラーハンドラーを使用してそれらをデコードします。 元のバイトが必要な場合は、
[os.fsencode(arg) for arg in sys.argv]
で取得できます。
- sys.audit(event, *args)
監査イベントを発生させ、アクティブな監査フックをトリガーします。 event はイベントを識別する文字列であり、 args には、イベントに関する詳細情報を含むオプションの引数を含めることができます。 特定のイベントの引数の数とタイプは、パブリックで安定したAPIと見なされるため、リリース間で変更しないでください。
たとえば、1つの監査イベントの名前は
os.chdir
です。 このイベントには、要求された新しい作業ディレクトリを含む path という引数が1つあります。sys.audit()は、既存の監査フックを呼び出して、イベント名と引数を渡し、任意のフックから最初の例外を再発生させます。 一般に、例外が発生した場合は、それを処理せず、プロセスをできるだけ早く終了する必要があります。 これにより、フックの実装は特定のイベントに応答する方法を決定できます。フックの実装は、単にイベントをログに記録するか、例外を発生させることで操作を中止できます。
フックは、 sys.addaudithook()または PySys_AddAuditHook()関数を使用して追加されます。
この関数のネイティブの同等物は PySys_Audit()です。 可能な場合は、ネイティブ関数を使用することをお勧めします。
CPythonによって発生するすべてのイベントについては、監査イベントテーブルを参照してください。
バージョン3.8の新機能。
- sys.base_exec_prefix
Pythonの起動中、
site.py
が実行される前に、 exec_prefix と同じ値に設定されます。 仮想環境で実行されていない場合、値は同じままです。site.py
が仮想環境が使用中であることを検出した場合、 prefix および exec_prefix の値は仮想環境を指すように変更されますが、 base_prefix [ X269X]および base_exec_prefix は、ベースのPythonインストール(仮想環境の作成元)をポイントしたままになります。バージョン3.3の新機能。
- sys.base_prefix
Pythonの起動中、
site.py
が実行される前に、 prefix と同じ値に設定されます。 仮想環境で実行されていない場合、値は同じままです。site.py
が仮想環境が使用中であることを検出した場合、 prefix および exec_prefix の値は仮想環境を指すように変更されますが、 base_prefix [ X269X]および base_exec_prefix は、ベースのPythonインストール(仮想環境の作成元)をポイントしたままになります。バージョン3.3の新機能。
- sys.byteorder
- ネイティブバイトオーダーのインジケータ。 これは、ビッグエンディアン(最上位バイトファースト)プラットフォームでは
'big'
の値になり、リトルエンディアン(最下位バイトファースト)プラットフォームでは'little'
になります。
- sys.builtin_module_names
- このPythonインタープリターにコンパイルされるすべてのモジュールの名前を示す文字列のタプル。 (この情報は他の方法では利用できません—
modules.keys()
はインポートされたモジュールのみをリストします。)
- sys.call_tracing(func, args)
- トレースを有効にした状態で、
func(*args)
を呼び出します。 トレース状態が保存され、後で復元されます。 これは、他のコードを再帰的にデバッグするために、チェックポイントからデバッガーから呼び出されることを目的としています。
- sys.copyright
- Pythonインタープリターに関連する著作権を含む文字列。
- sys._clear_type_cache()
内部タイプキャッシュをクリアします。 タイプキャッシュは、属性とメソッドのルックアップを高速化するために使用されます。 参照リークのデバッグ中に不要な参照を削除するには、関数のみを使用します。
この機能は、内部および特殊な目的でのみ使用する必要があります。
- sys._current_frames()
関数が呼び出されたときにそのスレッドで現在アクティブな最上位のスタックフレームに各スレッドの識別子をマッピングするディクショナリを返します。 traceback モジュールの関数は、そのようなフレームが与えられた場合にコールスタックを構築できることに注意してください。
これは、デッドロックのデバッグに最も役立ちます。この関数は、デッドロックされたスレッドの協力を必要とせず、そのようなスレッドの呼び出しスタックは、デッドロックされたままである限り凍結されます。 デッドロックされていないスレッドに対して返されるフレームは、呼び出し元のコードがフレームを調べるまでに、そのスレッドの現在のアクティビティとは関係がない場合があります。
この機能は、内部および特殊な目的でのみ使用する必要があります。
- sys.breakpointhook()
このフック関数は、組み込みの breakpoint()によって呼び出されます。 デフォルトでは、 pdb デバッガーに移動しますが、他の関数に設定して、使用するデバッガーを選択できます。
この関数のシグニチャは、それが呼び出すものによって異なります。 たとえば、デフォルトのバインディング(たとえば
pdb.set_trace()
)は引数を期待していませんが、追加の引数(位置および/またはキーワード)を期待する関数にバインドすることができます。 組み込みのbreakpoint()
関数は、その*args
と**kws
を直接通過させます。breakpointhooks()
が返すものはすべて、breakpoint()
から返されます。デフォルトの実装では、最初に環境変数 PYTHONBREAKPOINT を調べます。 これが
"0"
に設定されている場合、この関数はすぐに戻ります。 NS それはノーオペレーションです。 環境変数が設定されていない場合、または空の文字列に設定されている場合は、pdb.set_trace()
が呼び出されます。 それ以外の場合、この変数は、Pythonのドット付きインポートの命名法を使用して、実行する関数に名前を付ける必要があります。package.subpackage.module.function
。 この場合、package.subpackage.module
がインポートされ、結果のモジュールにはfunction()
という名前の呼び出し可能オブジェクトが含まれている必要があります。 これが実行され、*args
と**kws
が渡され、function()
が返すものは何でも、sys.breakpointhook()
は組み込みの breakpoint()に戻ります。 ] 関数。PYTHONBREAKPOINT で指定された呼び出し可能オブジェクトのインポート中に問題が発生した場合、 RuntimeWarning が報告され、ブレークポイントは無視されることに注意してください。
また、
sys.breakpointhook()
がプログラムでオーバーライドされた場合、 PYTHONBREAKPOINT は参照されません。バージョン3.7の新機能。
- sys._debugmallocstats()
CPythonのメモリアロケータの状態に関する低レベルの情報をstderrに出力します。
Pythonが–with-pydebugで構成されている場合、Pythonはいくつかの高価な内部整合性チェックも実行します。
バージョン3.3の新機能。
- sys.dllhandle
- PythonDLLのハンドルを指定する整数。
- sys.displayhook(value)
value が
None
でない場合、この関数はrepr(value)
をsys.stdout
に出力し、 value をbuiltins._
に保存します。 。repr(value)
がsys.stdout.errors
エラーハンドラー(おそらく'strict'
)でsys.stdout.encoding
にエンコードできない場合は、'backslashreplace'
エラーハンドラ。sys.displayhook
は、インタラクティブなPythonセッションで入力された式を評価した結果で呼び出されます。 これらの値の表示は、sys.displayhook
に別の1つの引数関数を割り当てることでカスタマイズできます。擬似コード:
バージョン3.2で変更: UnicodeEncodeError で
'backslashreplace'
エラーハンドラーを使用します。
- sys.dont_write_bytecode
- これが当てはまる場合、Pythonはソースモジュールのインポート時に
.pyc
ファイルを書き込もうとしません。 この値は、 -B コマンドラインオプションと PYTHONDONTWRITEBYTECODE 環境変数に応じて、最初はTrue
またはFalse
に設定されます。 、ただし、バイトコードファイルの生成を制御するように自分で設定できます。
- sys.pycache_prefix
これが設定されている場合(
None
ではない)、Pythonはバイトコードキャッシュ.pyc
ファイルを [からではなく、このディレクトリをルートとする並列ディレクトリツリーに書き込みます(そしてそれらを読み取ります)。 X178X]ソースコードツリーのディレクトリ。 ソースコードツリー内の__pycache__
ディレクトリはすべて無視され、新しい .pyc ファイルがpycacheプレフィックス内に書き込まれます。 したがって、ビルド前の手順として compileall を使用する場合は、実行時に使用するのと同じpycacheプレフィックス(存在する場合)を使用して実行する必要があります。相対パスは、現在の作業ディレクトリを基準にして解釈されます。
この値は、 -X
pycache_prefix=PATH
コマンドラインオプションまたは PYTHONPYCACHEPREFIX 環境変数(コマンドライン)の値に基づいて最初に設定されます。優先されます)。 どちらも設定されていない場合はNone
です。バージョン3.8の新機能。
- sys.excepthook(type, value, traceback)
この関数は、指定されたトレースバックと例外を
sys.stderr
に出力します。例外が発生してキャッチされない場合、インタープリターは3つの引数、例外クラス、例外インスタンス、およびトレースバックオブジェクトを使用して
sys.excepthook
を呼び出します。 インタラクティブセッションでは、これは制御がプロンプトに戻る直前に発生します。 Pythonプログラムでは、これはプログラムが終了する直前に発生します。 このようなトップレベルの例外の処理は、sys.excepthook
に別の3つの引数関数を割り当てることでカスタマイズできます。も参照してください
sys.unraisablehook()関数は発生しない例外を処理し、 threading.excepthook()関数は threading.Thread.run()によって発生した例外を処理します。
- sys.__breakpointhook__
sys.__displayhook__
sys.__excepthook__
sys.__unraisablehook__ これらのオブジェクトには、プログラムの開始時に
breakpointhook
、displayhook
、excepthook
、およびunraisablehook
の元の値が含まれています。breakpointhook
、displayhook
、excepthook
、unraisablehook
が壊れたオブジェクトや代替オブジェクトに置き換えられた場合に復元できるように、これらは保存されます。バージョン3.7の新機能: __ breakpointhook__
バージョン3.8の新機能: __ unraisablehook__
- sys.exc_info()
この関数は、現在処理されている例外に関する情報を提供する3つの値のタプルを返します。 返される情報は、現在のスレッドと現在のスタックフレームの両方に固有です。 現在のスタックフレームが例外を処理していない場合、情報は、例外を処理しているスタックフレームが見つかるまで、呼び出し元のスタックフレームまたはその呼び出し元から取得されます。 ここで、「例外の処理」とは、「例外句の実行」と定義されています。 どのスタックフレームでも、現在処理されている例外に関する情報にのみアクセスできます。
スタックのどこでも例外が処理されていない場合、3つの
None
値を含むタプルが返されます。 それ以外の場合、返される値は(type, value, traceback)
です。 それらの意味は次のとおりです。 type は、処理されている例外のタイプ( BaseException のサブクラス)を取得します。 value は、例外インスタンス(例外タイプのインスタンス)を取得します。 traceback は、 tracebackオブジェクトを取得します。これは、例外が最初に発生したポイントでコールスタックをカプセル化します。
- sys.exec_prefix
プラットフォームに依存するPythonファイルがインストールされるサイト固有のディレクトリプレフィックスを示す文字列。 デフォルトでは、これも
'/usr/local'
です。 これは、ビルド時に configure スクリプトの--exec-prefix
引数を使用して設定できます。 具体的には、すべての構成ファイル(例:pyconfig.h
ヘッダーファイル)はディレクトリexec_prefix/lib/pythonX.Y/config
にインストールされ、共有ライブラリモジュールはexec_prefix/lib/pythonX.Y/lib-dynload
にインストールされます。ここで、 XY はPythonのバージョン番号です。 、たとえば3.2
。ノート
仮想環境が有効な場合、この値は
site.py
で変更され、仮想環境を指します。 Pythonインストールの値は、 base_exec_prefix を介して引き続き利用できます。
- sys.executable
- これが理にかなっているシステムで、Pythonインタープリターの実行可能バイナリーの絶対パスを示す文字列。 Pythonが実行可能ファイルへの実際のパスを取得できない場合、 sys.executable は空の文字列または
None
になります。
- sys.exit([arg])
Pythonを終了します。 これは、 SystemExit 例外を発生させることによって実装されるため、 try ステートメントのfinally節で指定されたクリーンアップアクションが尊重され、外部レベルでの終了試行をインターセプトすることができます。
オプションの引数 arg は、終了ステータス(デフォルトはゼロ)を与える整数、または別のタイプのオブジェクトにすることができます。 整数の場合、ゼロは「正常終了」と見なされ、ゼロ以外の値はシェルなどによって「異常終了」と見なされます。 ほとんどのシステムでは、0〜127の範囲である必要があり、そうでない場合は未定義の結果が生成されます。 一部のシステムには、特定の終了コードに特定の意味を割り当てるための規則がありますが、これらは一般に開発が進んでいません。 Unixプログラムは通常、コマンドライン構文エラーに2を使用し、その他すべての種類のエラーに1を使用します。 別のタイプのオブジェクトが渡された場合、
None
はゼロを渡すことと同等であり、他のオブジェクトは stderr に出力され、終了コードは1になります。 特に、sys.exit("some error message")
は、エラーが発生したときにプログラムを終了する簡単な方法です。exit()は最終的に「のみ」例外を発生させるため、メインスレッドから呼び出された場合にのみプロセスを終了し、例外はインターセプトされません。
バージョン3.6で変更: Pythonインタープリターが SystemExit をキャッチした後、クリーンアップでエラーが発生した場合(標準ストリームのバッファーデータのフラッシュエラーなど)、終了ステータスが変更されます120まで。
- sys.flags
名前付きタプル フラグは、コマンドラインフラグのステータスを公開します。 属性は読み取り専用です。
属性
国旗
debug
interactive
isolated
optimize
no_user_site
no_site
ignore_environment
verbose
bytes_warning
quiet
hash_randomization
dev_mode
-X
dev
utf8_mode
-X
utf8
バージョン3.2で変更:新しい -q フラグに
quiet
属性を追加しました。バージョン3.2.3の新機能:
hash_randomization
属性。バージョン3.3で変更:廃止された
division_warning
属性を削除しました。バージョン3.4で変更: -I
isolated
フラグにisolated
属性を追加しました。バージョン3.7で変更:新しい -X
dev
フラグにdev_mode
属性を追加し、新しいにutf8_mode
属性を追加しました] -Xutf8
フラグ。
- sys.float_info
フロートタイプに関する情報を保持する名前付きタプル。 精度と内部表現に関する低レベルの情報が含まれています。 値は、「C」プログラミング言語の標準ヘッダーファイル
float.h
で定義されているさまざまな浮動小数点定数に対応しています。 詳細については、1999 ISO / IECC規格 [C99] のセクション5.2.4.2.2「フローティングタイプの特性」を参照してください。属性
float.hマクロ
説明
epsilon
DBL_EPSILON
1.0と、浮動小数点として表現できる1.0より大きい最小値との差
dig
DBL_DIG
浮動小数点で忠実に表現できる小数点以下の最大桁数。 下記参照
mant_dig
DBL_MANT_DIG
浮動小数点精度:浮動小数点の仮数の基数-
radix
桁の数DBL_MAX
表現可能な最大の正の有限フロート
max_exp
DBL_MAX_EXP
radix**(e-1)
が表現可能な有限浮動小数点数であるような最大整数 emax_10_exp
DBL_MAX_10_EXP
10**e
が表現可能な有限浮動小数点数の範囲内にあるような最大整数 eDBL_MIN
表現可能な最小の正の正規化フロート
min_exp
DBL_MIN_EXP
radix**(e-1)
が正規化されたfloatであるような最小整数 emin_10_exp
DBL_MIN_10_EXP
10**e
が正規化されたfloatであるような最小整数 eradix
FLT_RADIX
指数表現の基数
rounds
FLT_ROUNDS
算術演算に使用される丸めモードを表す整数定数。 これは、インタプリタの起動時のシステムFLT_ROUNDSマクロの値を反映しています。 可能な値とその意味の説明については、C99標準のセクション5.2.4.2.2を参照してください。
属性
sys.float_info.dig
にはさらに説明が必要です。s
が、最大でsys.float_info.dig
の有効数字を含む10進数を表す文字列である場合、s
をfloatに変換してから再度変換すると、同じ10進数値を表す文字列が復元されます。ただし、有効数字が
sys.float_info.dig
を超える文字列の場合、これが常に当てはまるとは限りません。
- sys.float_repr_style
repr()関数がfloatに対してどのように動作するかを示す文字列。 文字列の値が
'short'
の場合、有限フロートx
の場合、repr(x)
は、float(repr(x)) == x
というプロパティを持つ短い文字列を生成することを目的としています。 これは、Python3.1以降の通常の動作です。 それ以外の場合、float_repr_style
の値は'legacy'
であり、repr(x)
は3.1より前のバージョンのPythonと同じように動作します。バージョン3.1の新機能。
- sys.getallocatedblocks()
サイズに関係なく、インタプリタによって現在割り当てられているメモリブロックの数を返します。 この関数は、主にメモリリークの追跡とデバッグに役立ちます。 インタプリタの内部キャッシュのため、結果は呼び出しごとに異なる可能性があります。 より予測可能な結果を得るには、 _clear_type_cache()および gc.collect()を呼び出す必要がある場合があります。
Pythonのビルドまたは実装がこの情報を合理的に計算できない場合、 getallocatedblocks()は代わりに0を返すことができます。
バージョン3.4の新機能。
- sys.getandroidapilevel()
Androidのビルド時APIバージョンを整数として返します。
バージョン3.7の新機能。
- sys.getcheckinterval()
通訳者の「チェック間隔」を返します。 setcheckinterval()を参照してください。
バージョン3.2以降非推奨:代わりに getswitchinterval()を使用してください。
- sys.getdefaultencoding()
- Unicode実装で使用されている現在のデフォルトの文字列エンコーディングの名前を返します。
- sys.getdlopenflags()
dlopen()
呼び出しに使用されるフラグの現在の値を返します。 フラグ値の記号名は、 os モジュール(RTLD_xxx
定数、例: os.RTLD_LAZY )。
- sys.getfilesystemencoding()
Unicodeファイル名とバイトファイル名の間の変換に使用されるエンコーディングの名前を返します。 最高の互換性を得るには、ファイル名をバイトとして表すこともサポートされていますが、すべての場合にファイル名にstrを使用する必要があります。 ファイル名を受け入れるまたは返す関数は、strまたはbytesのいずれかをサポートし、システムの優先表現に内部的に変換する必要があります。
このエンコーディングは常にASCII互換です。
os.fsencode()および os.fsdecode()を使用して、正しいエンコードおよびエラーモードが使用されるようにする必要があります。
UTF-8モードでは、エンコードはどのプラットフォームでも
utf-8
です。macOSでは、エンコーディングは
'utf-8'
です。Unixでは、エンコーディングはロケールエンコーディングです。
Windowsでは、ユーザー構成に応じて、エンコードは
'utf-8'
または'mbcs'
になります。Androidでは、エンコーディングは
'utf-8'
です。VxWorksでは、エンコーディングは
'utf-8'
です。
バージョン3.2で変更: getfilesystemencoding()の結果を
None
にすることはできなくなりました。バージョン3.6での変更: Windowsが
'mbcs'
を返すことは保証されなくなりました。 詳細については、 PEP 529 および _enablelegacywindowsfsencoding()を参照してください。バージョン3.7で変更: UTF-8モードで「utf-8」を返します。
- sys.getfilesystemencodeerrors()
Unicodeファイル名とバイトファイル名の間の変換に使用されるエラーモードの名前を返します。 エンコーディング名は getfilesystemencoding()から返されます。
os.fsencode()および os.fsdecode()を使用して、正しいエンコードおよびエラーモードが使用されるようにする必要があります。
バージョン3.6の新機能。
- sys.getrefcount(object)
- オブジェクトの参照カウントを返します。 getrefcount()への引数として(一時的な)参照が含まれているため、返されるカウントは通常、予想よりも1つ多くなります。
- sys.getrecursionlimit()
- 再帰制限の現在の値、Pythonインタープリタースタックの最大深度を返します。 この制限により、無限再帰がCスタックのオーバーフローを引き起こしてPythonをクラッシュさせるのを防ぎます。 setrecursionlimit()で設定できます。
- sys.getsizeof(object[, default])
オブジェクトのサイズをバイト単位で返します。 オブジェクトは、任意のタイプのオブジェクトにすることができます。 すべての組み込みオブジェクトは正しい結果を返しますが、これは実装固有であるため、サードパーティの拡張機能に当てはまる必要はありません。
オブジェクトに直接起因するメモリ消費のみが考慮され、参照するオブジェクトのメモリ消費は考慮されません。
指定した場合、オブジェクトがサイズを取得する手段を提供しない場合、 default が返されます。 そうしないと、 TypeError が発生します。
getsizeof()は、オブジェクトの
__sizeof__
メソッドを呼び出し、オブジェクトがガベージコレクターによって管理されている場合は、ガベージコレクターのオーバーヘッドを追加します。getsizeof()を再帰的に使用してコンテナーのサイズとそのすべての内容を見つける例については、 recursivesizeofレシピを参照してください。
- sys.getswitchinterval()
インタプリタの「スレッド切り替え間隔」を返します。 setswitchinterval()を参照してください。
バージョン3.2の新機能。
- sys._getframe([depth])
- 呼び出しスタックからフレームオブジェクトを返します。 オプションの整数 depth が指定されている場合、スタックの最上位より下で多くの呼び出しが行われるフレームオブジェクトを返します。 それがコールスタックよりも深い場合、 ValueError が発生します。 depth のデフォルトはゼロで、呼び出しスタックの最上位にフレームを返します。
- sys.getprofile()
- setprofile()で設定されたプロファイラー関数を取得します。
- sys.gettrace()
- settrace()で設定されたトレース関数を取得します。
- sys.getwindowsversion()
現在実行中のWindowsバージョンを説明する名前付きタプルを返します。 名前付き要素は、 major 、 minor 、 build 、 platform 、 service_pack 、 service_pack_minor です。 ]、 service_pack_major 、 suite_mask 、 product_type 、 platform_version 。 service_pack には文字列が含まれ、 platform_version には3タプルが含まれ、その他の値はすべて整数です。 コンポーネントには名前でアクセスすることもできるため、
sys.getwindowsversion()[0]
はsys.getwindowsversion().major
と同等です。 以前のバージョンとの互換性のために、最初の5つの要素のみがインデックスによって取得できます。プラットフォームは
2 (VER_PLATFORM_WIN32_NT)
になります。product_type は、次のいずれかの値になります。
絶え間ない
意味
1 (VER_NT_WORKSTATION)
システムはワークステーションです。
2 (VER_NT_DOMAIN_CONTROLLER)
システムはドメインコントローラーです。
3 (VER_NT_SERVER)
システムはサーバーですが、ドメインコントローラーではありません。
この関数は、Win32
GetVersionEx()
関数をラップします。 これらのフィールドの詳細については、OSVERSIONINFOEX()
に関するMicrosoftのドキュメントを参照してください。platform_version は、プロセス用にエミュレートされているバージョンではなく、現在のオペレーティングシステムのメジャーバージョン、マイナーバージョン、およびビルド番号を返します。 これは、機能の検出ではなく、ロギングでの使用を目的としています。
ノート
platform_version は、カーネル32.dllからバージョンを派生させます。これは、OSバージョンとは異なるバージョンである可能性があります。 正確なOSバージョンを実現するには、プラットフォームモジュールを使用してください。
バージョン3.2で変更:名前付きタプルに変更され、 service_pack_minor 、 service_pack_major 、 suite_mask 、および product_type が追加されました。
バージョン3.6で変更: platform_version を追加
- sys.get_asyncgen_hooks()
asyncgen_hooks オブジェクトを返します。これは、(firstiter、finalizer)の形式の namedtuple に似ています。ここで、 firstiter およびファイナライザーは、
None
または非同期ジェネレーターイテレーターを引数として取る関数であることが期待され、イベントループによる非同期ジェネレーターのファイナライズをスケジュールするために使用されます。バージョン3.6の新機能:詳細については、 PEP 525 を参照してください。
ノート
この機能は暫定的に追加されました(詳細は PEP 411 を参照してください)。
- sys.get_coroutine_origin_tracking_depth()
set_coroutine_origin_tracking_depth()で設定されている、現在のコルーチン原点追跡深度を取得します。
バージョン3.7の新機能。
ノート
この機能は暫定的に追加されました(詳細は PEP 411 を参照)。デバッグ目的でのみ使用してください。
- sys.hash_info
数値ハッシュ実装のパラメーターを与える名前付きタプル。 数値型のハッシュの詳細については、数値型のハッシュを参照してください。
属性
説明
width
ハッシュ値に使用されるビット幅
modulus
数値ハッシュスキームに使用される素数モジュラスP
inf
正の無限大に対して返されたハッシュ値
nan
nanに返されるハッシュ値
imag
複素数の虚数部に使用される乗数
algorithm
str、bytes、memoryviewをハッシュするためのアルゴリズムの名前
hash_bits
ハッシュアルゴリズムの内部出力サイズ
seed_bits
ハッシュアルゴリズムのシードキーのサイズ
バージョン3.2の新機能。
バージョン3.4で変更: アルゴリズム、 hash_bits 、 seed_bits を追加
- sys.hexversion
単一の整数としてエンコードされたバージョン番号。 これは、非実稼働リリースの適切なサポートを含め、バージョンごとに増加することが保証されています。 たとえば、Pythonインタープリターが少なくともバージョン1.5.2であることをテストするには、次を使用します。
これは、組み込みの hex()関数に渡した結果として表示されたときにのみ実際に意味があるように見えるため、
hexversion
と呼ばれます。 名前付きタプル sys.version_info は、同じ情報をより人間にわかりやすくエンコードするために使用できます。hexversion
の詳細については、 APIおよびABIバージョン管理を参照してください。
- sys.implementation
現在実行中のPythonインタープリターの実装に関する情報を含むオブジェクト。 次の属性は、すべてのPython実装に存在する必要があります。
name は、実装の識別子です。例:
'cpython'
。 実際の文字列はPython実装によって定義されますが、小文字であることが保証されています。version は、 sys.version_info と同じ形式の名前付きタプルです。 これは、Python 実装のバージョンを表します。 これは、現在実行中のインタープリターが準拠しているPython language の特定のバージョン(
sys.version_info
が表す)とは異なる意味を持っています。 たとえば、PyPy 1.8の場合、sys.implementation.version
はsys.version_info(1, 8, 0, 'final', 0)
になりますが、sys.version_info
はsys.version_info(2, 7, 2, 'final', 0)
になります。 CPythonの場合、リファレンス実装であるため、これらは同じ値です。hexversion は、 sys.hexversion のように、16進形式の実装バージョンです。
cache_tag は、キャッシュされたモジュールのファイル名でインポート機構によって使用されるタグです。 慣例により、
'cpython-33'
のように、実装の名前とバージョンを組み合わせたものになります。 ただし、Python実装では、必要に応じて他の値を使用する場合があります。cache_tag
がNone
に設定されている場合は、モジュールのキャッシュを無効にする必要があることを示しています。sys.implementation には、Python実装に固有の追加の属性が含まれる場合があります。 これらの非標準属性はアンダースコアで始まる必要があり、ここでは説明しません。 その内容に関係なく、 sys.implementation は、インタープリターの実行中、または実装バージョン間で変更されません。 (ただし、Python言語のバージョン間で変更される可能性があります。)詳細については、 PEP 421 を参照してください。
バージョン3.3の新機能。
ノート
新しい必須属性の追加は、通常のPEPプロセスを経る必要があります。 詳細については、 PEP 421 を参照してください。
- sys.int_info
Pythonの整数の内部表現に関する情報を保持する名前付きタプル。 属性は読み取り専用です。
属性
説明
bits_per_digit
各桁に保持されているビット数。 Python整数は、ベース
2**int_info.bits_per_digit
に内部的に格納されます。sizeof_digit
数字を表すために使用されるCタイプのバイト単位のサイズ
バージョン3.1の新機能。
- sys.__interactivehook__
この属性が存在する場合、インタプリタが対話モードで起動されると、その値が自動的に呼び出されます(引数なし)。 これは、 PYTHONSTARTUP ファイルが読み取られた後に実行されるため、このフックをそこに設定できます。 サイトモジュールはこれを設定します。
バージョン3.4の新機能。
- sys.intern(string)
「インターン」文字列のテーブルに string と入力し、インターン文字列( string 自体またはコピー)を返します。 文字列のインターンは、ディクショナリルックアップのパフォーマンスを少し向上させるのに役立ちます。ディクショナリ内のキーがインターンされ、ルックアップキーがインターンされている場合、キー比較(ハッシュ後)は、文字列比較の代わりにポインタ比較によって実行できます。 通常、Pythonプログラムで使用される名前は自動的にインターンされ、モジュール、クラス、またはインスタンスの属性を保持するために使用されるディクショナリにはインターンされたキーがあります。
インターンされた文字列は不滅ではありません。 intern()の戻り値への参照を保持して、その恩恵を受ける必要があります。
- sys.last_type
sys.last_value
sys.last_traceback これらの3つの変数は常に定義されているわけではありません。 これらは、例外が処理されず、インタープリターがエラーメッセージとスタックトレースバックを出力するときに設定されます。 それらの使用目的は、対話型ユーザーがデバッガーモジュールをインポートし、エラーの原因となったコマンドを再実行することなく、事後デバッグを実行できるようにすることです。 (通常、事後デバッガーに入るには
import pdb; pdb.pm()
を使用します。詳細については、 pdb モジュールを参照してください。)変数の意味は、上記の exc_info()からの戻り値の意味と同じです。
- sys.maxsize
- タイプ
Py_ssize_t
の変数が取ることができる最大値を与える整数。 通常、32ビットプラットフォームでは2**31 - 1
、64ビットプラットフォームでは2**63 - 1
です。
- sys.maxunicode
最大のUnicodeコードポイントの値を与える整数。
1114111
(16進数の0x10FFFF
)。バージョン3.3で変更: PEP 393 より前は、
sys.maxunicode
は0xFFFF
または0x10FFFF
のいずれかでした。 、Unicode文字をUCS-2またはUCS-4のどちらとして保存するかを指定した構成オプションによって異なります。
- sys.meta_path
find_spec()メソッドが呼び出されたメタパスファインダーオブジェクトのリスト。オブジェクトの1つがインポートするモジュールを見つけることができるかどうかを確認します。 find_spec()メソッドは、少なくともインポートされるモジュールの絶対名を使用して呼び出されます。 インポートするモジュールがパッケージに含まれている場合、親パッケージの __ path __ 属性が2番目の引数として渡されます。 このメソッドは、モジュール仕様を返します。モジュールが見つからない場合は、
None
を返します。も参照してください
importlib.abc.MetaPathFinder
meta_path 上のファインダーオブジェクトのインターフェースを定義する抽象基本クラス。
importlib.machinery.ModuleSpec
find_spec()がインスタンスを返す必要がある具象クラス。
バージョン3.4での変更: モジュール仕様はPython3.4で PEP 451 によって導入されました。 以前のバージョンのPythonは、 find_module()というメソッドを探していました。 meta_path エントリに find_spec()メソッドがない場合、これはフォールバックと呼ばれます。
- sys.modules
- これは、モジュール名をすでにロードされているモジュールにマップする辞書です。 これを操作して、モジュールのリロードやその他のトリックを強制することができます。 ただし、辞書の置き換えは必ずしも期待どおりに機能するとは限らず、辞書から重要な項目を削除するとPythonが失敗する可能性があります。
- sys.path
モジュールの検索パスを指定する文字列のリスト。 環境変数 PYTHONPATH から初期化され、さらにインストールに依存するデフォルト。
プログラムの起動時に初期化されると、このリストの最初の項目
path[0]
は、Pythonインタープリターを呼び出すために使用されたスクリプトを含むディレクトリです。 スクリプトディレクトリが利用できない場合(例: インタプリタがインタラクティブに呼び出される場合、またはスクリプトが標準入力から読み取られる場合)、path[0]
は空の文字列であり、Pythonに現在のディレクトリ内のモジュールを最初に検索するように指示します。 PYTHONPATH の結果として挿入されたエントリの前に、スクリプトディレクトリが挿入されていることに注意してください。プログラムは、独自の目的でこのリストを自由に変更できます。 文字列とバイトのみを sys.path に追加する必要があります。 他のすべてのデータ型は、インポート中に無視されます。
- sys.path_hooks
パス引数を取り、パスのファインダーを作成しようとする呼び出し可能オブジェクトのリスト。 ファインダーを作成できる場合は、呼び出し可能オブジェクトによって返されます。それ以外の場合は、 ImportError を発生させます。
当初は PEP 302 で指定されていました。
- sys.path_importer_cache
ファインダーオブジェクトのキャッシュとして機能する辞書。 キーは sys.path_hooks に渡されたパスであり、値は検出されたファインダーです。 パスが有効なファイルシステムパスであるが、 sys.path_hooks にファインダーが見つからない場合、
None
が保存されます。当初は PEP 302 で指定されていました。
バージョン3.3で変更:ファインダーが見つからない場合、 imp.NullImporter の代わりに
None
が保存されます。
- sys.platform
この文字列には、たとえば、プラットフォーム固有のコンポーネントを sys.path に追加するために使用できるプラットフォーム識別子が含まれています。
LinuxおよびAIXを除くUnixシステムの場合、これは
uname -s
によって返される小文字のOS名であり、uname -r
によって返されるバージョンの最初の部分が追加されます。'sunos5'
または'freebsd8'
、 Pythonが構築されたとき。 したがって、特定のシステムバージョンをテストする場合を除いて、次のイディオムを使用することをお勧めします。他のシステムの場合、値は次のとおりです。
システム
platform
値AIX
'aix'
Linux
'linux'
ウィンドウズ
'win32'
Windows / Cygwin
'cygwin'
マックOS
'darwin'
バージョン3.3で変更: Linuxでは、 sys.platform にメジャーバージョンが含まれなくなりました。
'linux2'
や'linux3'
ではなく、常に'linux'
です。 古いPythonバージョンにはバージョン番号が含まれているため、上記のstartswith
イディオムを常に使用することをお勧めします。バージョン3.8で変更: AIXでは、 sys.platform にメジャーバージョンが含まれなくなりました。
'aix5'
や'aix7'
ではなく、常に'aix'
です。 古いPythonバージョンにはバージョン番号が含まれているため、上記のstartswith
イディオムを常に使用することをお勧めします。も参照してください
os.name の粒度は粗くなります。 os.uname()は、システムに依存するバージョン情報を提供します。
platform モジュールは、システムのIDの詳細なチェックを提供します。
- sys.prefix
プラットフォームに依存しないPythonファイルがインストールされるサイト固有のディレクトリプレフィックスを示す文字列。 デフォルトでは、これは文字列
'/usr/local'
です。 これは、ビルド時に configure スクリプトの--prefix
引数を使用して設定できます。 Pythonライブラリモジュールのメインコレクションはディレクトリprefix/lib/pythonX.Y
にインストールされ、プラットフォームに依存しないヘッダーファイル(pyconfig.h
を除くすべて)はprefix/include/pythonX.Y
に保存されます。ここで、 XY [ X191X]は、Pythonのバージョン番号です(例:3.2
)。ノート
仮想環境が有効な場合、この値は
site.py
で変更され、仮想環境を指します。 Pythonインストールの値は、 base_prefix を介して引き続き利用できます。
- sys.ps1
sys.ps2
- インタプリタのプライマリプロンプトとセカンダリプロンプトを指定する文字列。 これらは、インタプリタがインタラクティブモードの場合にのみ定義されます。 この場合の初期値は
'>>> '
と'... '
です。 文字列以外のオブジェクトがいずれかの変数に割り当てられている場合、インタプリタが新しい対話型コマンドを読み取る準備をするたびに、その str()が再評価されます。 これは、動的プロンプトを実装するために使用できます。
- sys.setcheckinterval(interval)
通訳者の「チェック間隔」を設定します。 この整数値は、インタープリターがスレッドスイッチやシグナルハンドラーなどの定期的なものをチェックする頻度を決定します。 デフォルトは
100
です。これは、100個のPython仮想命令ごとにチェックが実行されることを意味します。 値を大きくすると、スレッドを使用するプログラムのパフォーマンスが向上する場合があります。 値<=
0に設定すると、すべての仮想命令がチェックされ、応答性とオーバーヘッドが最大化されます。バージョン3.2以降非推奨:スレッド切り替えと非同期タスクの内部ロジックが書き直されたため、この関数は機能しなくなりました。 代わりに setswitchinterval()を使用してください。
- sys.setdlopenflags(n)
- インタプリタが拡張モジュールをロードするときなど、
dlopen()
呼び出しにインタプリタが使用するフラグを設定します。 特に、これにより、sys.setdlopenflags(0)
と呼ばれる場合、モジュールをインポートするときにシンボルの遅延解決が可能になります。 拡張モジュール間でシンボルを共有するには、sys.setdlopenflags(os.RTLD_GLOBAL)
として呼び出します。 フラグ値の記号名は、 os モジュール(RTLD_xxx
定数、例: os.RTLD_LAZY )。
- sys.setprofile(profilefunc)
システムのプロファイル関数を設定します。これにより、PythonでPythonソースコードプロファイラーを実装できます。 Pythonプロファイラーの詳細については、 Pythonプロファイラーの章を参照してください。 システムのプロファイル関数は、システムのトレース関数と同様に呼び出されます( settrace()を参照)が、異なるイベントで呼び出されます。たとえば、実行されたコード行ごとに呼び出されません(呼び出し時のみ)。およびreturnですが、例外が設定されている場合でもreturnイベントが報告されます)。 この関数はスレッド固有ですが、プロファイラーがスレッド間のコンテキストスイッチについて知る方法がないため、複数のスレッドが存在する場合にこれを使用することは意味がありません。 また、戻り値は使用されないため、
None
を返すだけで済みます。 プロファイル機能にエラーがあると、それ自体が設定解除されます。プロファイル関数には、 frame 、 event 、および arg の3つの引数が必要です。 frame は現在のスタックフレームです。 event は文字列です:
'call'
、'return'
、'c_call'
、'c_return'
、または'c_exception'
。 arg は、イベントタイプによって異なります。イベントの意味は次のとおりです。
'call'
関数が呼び出されます(または他のコードブロックが入力されます)。 プロファイル関数が呼び出されます。 arg は
None
です。'return'
関数(または他のコードブロック)が返されようとしています。 プロファイル関数が呼び出されます。 arg は返される値であり、イベントの原因が例外の発生である場合は
None
です。'c_call'
AC関数が呼び出されようとしています。 これは、拡張機能または組み込みの場合があります。 arg はC関数オブジェクトです。
'c_return'
AC機能が戻ってきました。 arg はC関数オブジェクトです。
'c_exception'
AC機能で例外が発生しました。 arg はC関数オブジェクトです。
- sys.setrecursionlimit(limit)
Pythonインタープリタースタックの最大深度を limit に設定します。 この制限により、無限再帰がCスタックのオーバーフローを引き起こしてPythonをクラッシュさせるのを防ぎます。
可能な上限はプラットフォームによって異なります。 深い再帰を必要とするプログラムと、より高い制限をサポートするプラットフォームがある場合、ユーザーは制限をより高く設定する必要がある場合があります。 制限が高すぎるとクラッシュする可能性があるため、これは注意して行う必要があります。
現在の再帰深度で新しい制限が低すぎる場合、 RecursionError 例外が発生します。
バージョン3.5.1で変更:現在の再帰深度で新しい制限が低すぎる場合、 RecursionError 例外が発生するようになりました。
- sys.setswitchinterval(interval)
インタプリタのスレッド切り替え間隔(秒単位)を設定します。 この浮動小数点値は、同時に実行されているPythonスレッドに割り当てられる「タイムスライス」の理想的な期間を決定します。 特に長時間実行される内部関数またはメソッドが使用されている場合は、実際の値が高くなる可能性があることに注意してください。 また、間隔の終了時にどのスレッドがスケジュールされるかは、オペレーティングシステムの決定です。 インタプリタには独自のスケジューラがありません。
バージョン3.2の新機能。
- sys.settrace(tracefunc)
システムのトレース関数を設定します。これにより、PythonでPythonソースコードデバッガーを実装できます。 関数はスレッド固有です。 デバッガーが複数のスレッドをサポートするには、デバッグ中のスレッドごとに settrace()を使用してトレース関数を登録するか、 threading.settrace()を使用する必要があります。
トレース関数には、 frame 、 event 、および arg の3つの引数が必要です。 frame は現在のスタックフレームです。 event は文字列です:
'call'
、'line'
、'return'
、'exception'
、または'opcode'
。 arg は、イベントタイプによって異なります。新しいローカルスコープが入力されるたびに、トレース関数が呼び出されます( event が
'call'
に設定されている場合)。 新しいスコープに使用されるローカルトレース関数への参照を返すか、スコープをトレースしない場合はNone
を返す必要があります。ローカルトレース関数は、それ自体(またはそのスコープでさらにトレースするための別の関数)への参照を返すか、
None
でそのスコープでのトレースをオフにする必要があります。トレース機能でエラーが発生した場合は、
settrace(None)
を呼び出すのと同じように、設定が解除されます。イベントの意味は次のとおりです。
'call'
関数が呼び出されます(または他のコードブロックが入力されます)。 グローバルトレース関数が呼び出されます。 arg は
None
です。 戻り値はローカルトレース関数を指定します。'line'
インタプリタは、新しいコード行を実行するか、ループの条件を再実行しようとしています。 ローカルトレース関数が呼び出されます。 arg は
None
です。 戻り値は、新しいローカルトレース関数を指定します。 これがどのように機能するかの詳細な説明については、Objects/lnotab_notes.txt
を参照してください。 フレームのf_trace_lines
を False に設定すると、そのフレームの行ごとのイベントを無効にできます。'return'
関数(または他のコードブロック)が返されようとしています。 ローカルトレース関数が呼び出されます。 arg は返される値であり、イベントの原因が例外の発生である場合は
None
です。 トレース関数の戻り値は無視されます。'exception'
例外が発生しました。 ローカルトレース関数が呼び出されます。 arg はタプル
(exception, value, traceback)
です。 戻り値は、新しいローカルトレース関数を指定します。'opcode'
インタプリタが新しいオペコードを実行しようとしています(オペコードの詳細については、 dis を参照してください)。 ローカルトレース関数が呼び出されます。 arg は
None
です。 戻り値は、新しいローカルトレース関数を指定します。 デフォルトでは、オペコードごとのイベントは発行されません。フレームでf_trace_opcodes
を True に設定して、明示的に要求する必要があります。
例外が呼び出し元のチェーンに伝播されると、
'exception'
イベントが各レベルで生成されることに注意してください。よりきめ細かい使用法として、すでにインストールされているトレース関数からの戻り値を介して間接的に設定されるのではなく、
frame.f_trace = tracefunc
を明示的に割り当てることによってトレース関数を設定することができます。 これは、現在のフレームでトレース機能をアクティブにするためにも必要ですが、 settrace()では実行されません。 これが機能するためには、ランタイムトレース機構を有効にするために settrace()とともにグローバルトレース関数がインストールされている必要がありますが、同じトレース関数である必要はありません(例: これは、None
を返すだけで、各フレームですぐに無効になる、オーバーヘッドの少ないトレース関数である可能性があります。コードおよびフレームオブジェクトの詳細については、標準タイプ階層を参照してください。
バージョン3.7で変更:
'opcode'
イベントタイプが追加されました。f_trace_lines
およびf_trace_opcodes
属性がフレームに追加されました
- sys.set_asyncgen_hooks(firstiter, finalizer)
非同期ジェネレータイテレータを引数として受け入れる呼び出し可能である2つのオプションのキーワード引数を受け入れます。 firstiter 呼び出し可能オブジェクトは、非同期ジェネレーターが初めて繰り返されるときに呼び出されます。 ファイナライザーは、非同期ジェネレーターがガベージコレクションされようとしているときに呼び出されます。
基盤となるAPIは2つの呼び出しで構成されており、それぞれが独自のイベントを発生させる必要があるため、2つの監査イベントが発生します。
バージョン3.6の新機能:詳細については PEP 525 を、ファイナライザーメソッドの参照例については[X12X]の実装を参照してください。 X162X] in :source: `Lib / asyncio / base_events.py`
ノート
この機能は暫定的に追加されました(詳細は PEP 411 を参照してください)。
- sys.set_coroutine_origin_tracking_depth(depth)
コルーチンオリジントラッキングを有効または無効にできます。 有効にすると、コルーチンオブジェクトの
cr_origin
属性には、コルーチンオブジェクトが作成されたトレースバックを説明する(ファイル名、行番号、関数名)タプルのタプルが含まれ、最新の呼び出しが最初になります。 無効にすると、cr_origin
はNoneになります。有効にするには、ゼロより大きい depth 値を渡します。 これにより、情報がキャプチャされるフレームの数が設定されます。 無効にするには、set depth をゼロに渡します。
この設定はスレッド固有です。
バージョン3.7の新機能。
ノート
この機能は暫定的に追加されました(詳細は PEP 411 を参照)。デバッグ目的でのみ使用してください。
- sys._enablelegacywindowsfsencoding()
3.6より前のバージョンのPythonとの一貫性を保つために、デフォルトのファイルシステムエンコーディングとエラーモードをそれぞれ「mbcs」と「replace」に変更します。
これは、Pythonを起動する前に PYTHONLEGACYWINDOWSFSENCODING 環境変数を定義することと同じです。
バージョン3.6の新機能:詳細については、 PEP 529 を参照してください。
- sys.stdin
sys.stdout
sys.stderr ファイルオブジェクトは、標準の入力、出力、およびエラーのためにインタープリターによって使用されます。
stdin
は、すべての対話型入力( input()の呼び出しを含む)に使用されます。stdout
は、 print()および expression ステートメントの出力、および input()のプロンプトに使用されます。インタプリタ自身のプロンプトとそのエラーメッセージは
stderr
に送られます。
これらのストリームは、 open()関数によって返されるものと同様の通常のテキストファイルです。 それらのパラメータは次のように選択されます。
文字エンコードはプラットフォームに依存します。 Windows以外のプラットフォームは、ロケールエンコーディングを使用します( locale.getpreferredencoding()を参照)。
Windowsでは、コンソールデバイスにUTF-8が使用されます。 ディスクファイルやパイプなどの文字以外のデバイスは、システムロケールエンコーディングを使用します(つまり、 ANSIコードページ)。 NULなどの非コンソールキャラクターデバイス(つまり ここで、
isatty()
はTrue
を返します)起動時のコンソール入力および出力コードページの値を、それぞれstdinおよびstdout / stderrに使用します。 プロセスが最初にコンソールに接続されていない場合、これはデフォルトでシステムロケールエンコーディングになります。コンソールの特別な動作は、Pythonを起動する前に環境変数PYTHONLEGACYWINDOWSSTDIOを設定することでオーバーライドできます。 その場合、コンソールのコードページは他の文字デバイスと同様に使用されます。
すべてのプラットフォームで、Pythonを起動する前に PYTHONIOENCODING 環境変数を設定するか、新しい -X
utf8
を使用して、文字エンコードをオーバーライドできます。コマンドラインオプションと PYTHONUTF8 環境変数。 ただし、Windowsコンソールの場合、これは PYTHONLEGACYWINDOWSSTDIO も設定されている場合にのみ適用されます。インタラクティブな場合、
stdout
およびstderr
ストリームはラインバッファリングされます。 それ以外の場合は、通常のテキストファイルのようにブロックバッファリングされます。 この値は、 -u コマンドラインオプションで上書きできます。
ノート
標準ストリームとの間でバイナリデータを読み書きするには、基になるバイナリ buffer オブジェクトを使用します。 たとえば、 stdout にバイトを書き込むには、
sys.stdout.buffer.write(b'abc')
を使用します。ただし、ライブラリを作成している場合(および、そのコードが実行されるコンテキストを制御しない場合)、標準ストリームが io.StringIO のようなファイルのようなオブジェクトに置き換えられる可能性があることに注意してください。
buffer
属性をサポートします。
- sys.__stdin__
sys.__stdout__
sys.__stderr__ これらのオブジェクトには、プログラムの開始時に
stdin
、stderr
、およびstdout
の元の値が含まれています。 これらはファイナライズ中に使用され、sys.std*
オブジェクトがリダイレクトされているかどうかに関係なく、実際の標準ストリームに出力するのに役立つ可能性があります。また、壊れたオブジェクトで上書きされた場合に、実際のファイルを既知の作業ファイルオブジェクトに復元するためにも使用できます。 ただし、これを行うための推奨される方法は、前のストリームを置き換える前に明示的に保存し、保存されたオブジェクトを復元することです。
ノート
条件によっては、
stdin
、stdout
、stderr
、および元の値__stdin__
、__stdout__
、__stderr__
が可能です。None
になります。 これは通常、コンソールに接続されていないWindows GUIアプリと、 pythonw で開始されたPythonアプリの場合です。
- sys.thread_info
スレッドの実装に関する情報を保持する名前付きタプル。
属性
説明
name
スレッド実装の名前:
'nt'
:Windowsスレッド'pthread'
:POSIXスレッド'solaris'
:Solarisスレッド
lock
ロック実装の名前:
'semaphore'
:ロックはセマフォを使用します'mutex+cond'
:ロックはミューテックスと条件変数を使用しますNone
この情報が不明な場合
スレッドライブラリの名前とバージョン。 文字列、またはこの情報が不明な場合は
None
です。バージョン3.3の新機能。
- sys.tracebacklimit
- この変数を整数値に設定すると、未処理の例外が発生したときに出力されるトレースバック情報の最大レベル数が決まります。 デフォルトは
1000
です。0
以下に設定すると、すべてのトレースバック情報が抑制され、例外のタイプと値のみが出力されます。
- sys.unraisablehook(unraisable, /)
発生しない例外を処理します。
例外が発生したが、Pythonがそれを処理する方法がない場合に呼び出されます。 たとえば、デストラクタが例外を発生させたとき、またはガベージコレクション中に( gc.collect())。
unraisable 引数には、次の属性があります。
exc_type :例外タイプ。
exc_value :例外値。
None
の場合があります。exc_traceback :例外トレースバック。
None
の場合があります。err_msg :エラーメッセージ。
None
の可能性があります。object :例外の原因となっているオブジェクト。
None
の可能性があります。
デフォルトのフック形式は、 err_msg および object を次のようにフォーマットします。
f'{err_msg}: {object!r}'
; err_msg がNone
の場合は、「Exceptionignoredin」エラーメッセージを使用してください。sys.unraisablehook()をオーバーライドして、発生しない例外の処理方法を制御できます。
カスタムフックを使用して exc_value を保存すると、参照サイクルを作成できます。 例外が不要になったときに参照サイクルを中断するには、明示的にクリアする必要があります。
カスタムフックを使用してオブジェクトを保存すると、ファイナライズ中のオブジェクトに設定されている場合、オブジェクトを復活させることができます。 オブジェクトの復活を避けるために、カスタムフックの完了後にオブジェクトを保存しないでください。
キャッチされない例外を処理する excepthook()も参照してください。
バージョン3.8の新機能。
- sys.version
- Pythonインタープリターのバージョン番号に加えて、使用されるビルド番号とコンパイラーに関する追加情報を含む文字列。 この文字列は、インタラクティブインタプリタの起動時に表示されます。 そこからバージョン情報を抽出するのではなく、 version_info と platform モジュールによって提供される関数を使用してください。
- sys.api_version
- このインタプリタのCAPIバージョン。 プログラマーは、Pythonと拡張モジュールの間でバージョンの競合をデバッグするときにこれが役立つ場合があります。
- sys.version_info
バージョン番号の5つのコンポーネントを含むタプル:メジャー、マイナー、マイクロ、リリースレベル、およびシリアル ]。 releaselevel を除くすべての値は整数です。 リリースレベルは、
'alpha'
、'beta'
、'candidate'
、または'final'
です。 Pythonバージョン2.0に対応するversion_info
の値は(2, 0, 0, 'final', 0)
です。 コンポーネントには名前でアクセスすることもできるため、sys.version_info[0]
はsys.version_info.major
などと同等です。バージョン3.1で変更:名前付きコンポーネント属性が追加されました。
- sys.warnoptions
- これは、警告フレームワークの実装の詳細です。 この値は変更しないでください。 警告フレームワークの詳細については、 warnings モジュールを参照してください。
- sys.winver
- Windowsプラットフォームでレジストリキーを形成するために使用されるバージョン番号。 これは、PythonDLLに文字列リソース1000として保存されます。 値は通常、バージョンの最初の3文字です。 これは、情報提供の目的で sys モジュールで提供されます。 この値を変更しても、Pythonで使用されるレジストリキーには影響しません。
- sys._xoptions
-X コマンドラインオプションを介して渡されるさまざまな実装固有のフラグの辞書。 オプション名は、明示的に指定されている場合はその値にマップされるか、 True にマップされます。 例:
$ ./python -Xa=b -Xc Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys._xoptions {'a': 'b', 'c': True}
バージョン3.2の新機能。
引用
- C99
- ISO / IEC 9899:1999。 「プログラミング言語–C」 この規格の公開ドラフトは、 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdfで入手できます。