28.1. sys —システム固有のパラメーターと関数—Pythonドキュメント

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

28.1。 sys —システム固有のパラメーターと機能

このモジュールは、インタプリタによって使用または維持されるいくつかの変数、およびインタプリタと強力に相互作用する関数へのアクセスを提供します。 いつでもご利用いただけます。

sys.argv

Pythonスクリプトに渡されるコマンドライン引数のリスト。 argv[0]はスクリプト名です(これがフルパス名であるかどうかはオペレーティングシステムによって異なります)。 インタプリタの -c コマンドラインオプションを使用してコマンドを実行した場合、argv[0]は文字列'-c'に設定されます。 スクリプト名がPythonインタープリターに渡されなかった場合、argv[0]は空の文字列です。

標準入力、またはコマンドラインで指定されたファイルのリストをループするには、 fileinput モジュールを参照してください。

sys.byteorder

ネイティブバイトオーダーのインジケータ。 これは、ビッグエンディアン(最上位バイトファースト)プラットフォームでは'big'の値になり、リトルエンディアン(最下位バイトファースト)プラットフォームでは'little'になります。

バージョン2.0の新機能。

sys.builtin_module_names
このPythonインタープリターにコンパイルされるすべてのモジュールの名前を示す文字列のタプル。 (この情報は他の方法では利用できません— modules.keys()はインポートされたモジュールのみをリストします。)
sys.call_tracing(func, args)
トレースを有効にした状態で、func(*args)を呼び出します。 トレース状態が保存され、後で復元されます。 これは、他のコードを再帰的にデバッグするために、チェックポイントからデバッガーから呼び出されることを目的としています。
sys.copyright
Pythonインタープリターに関連する著作権を含む文字列。
sys._clear_type_cache()

内部タイプキャッシュをクリアします。 タイプキャッシュは、属性とメソッドのルックアップを高速化するために使用されます。 参照リークのデバッグ中に不要な参照を削除するには、関数のみを使用します。

この機能は、内部および特殊な目的でのみ使用する必要があります。

バージョン2.6の新機能。

sys._current_frames()

関数が呼び出されたときにそのスレッドで現在アクティブな最上位のスタックフレームに各スレッドの識別子をマッピングするディクショナリを返します。 traceback モジュールの関数は、そのようなフレームが与えられた場合にコールスタックを構築できることに注意してください。

これは、デッドロックのデバッグに最も役立ちます。この関数は、デッドロックされたスレッドの協力を必要とせず、そのようなスレッドの呼び出しスタックは、デッドロックされたままである限り凍結されます。 デッドロックされていないスレッドに対して返されるフレームは、呼び出し元のコードがフレームを調べるまでに、そのスレッドの現在のアクティビティとは関係がない場合があります。

この機能は、内部および特殊な目的でのみ使用する必要があります。

バージョン2.5の新機能。

sys.dllhandle
PythonDLLのハンドルを指定する整数。 可用性:Windows。
sys.displayhook(value)

valueNoneでない場合、この関数はそれをsys.stdoutに出力し、__builtin__._に保存します。

sys.displayhookは、インタラクティブなPythonセッションで入力されたを評価した結果で呼び出されます。 これらの値の表示は、sys.displayhookに別の1つの引数関数を割り当てることでカスタマイズできます。

sys.dont_write_bytecode

これが当てはまる場合、Pythonはソースモジュールのインポート時に.pycまたは.pyoファイルを書き込もうとしません。 この値は、 -B コマンドラインオプションと PYTHONDONTWRITEBYTECODE 環境変数に応じて、最初はTrueまたはFalseに設定されます。 、ただし、バイトコードファイルの生成を制御するように自分で設定できます。

バージョン2.6の新機能。

sys.excepthook(type, value, traceback)

この関数は、指定されたトレースバックと例外をsys.stderrに出力します。

例外が発生してキャッチされない場合、インタープリターは3つの引数、例外クラス、例外インスタンス、およびトレースバックオブジェクトを使用してsys.excepthookを呼び出します。 インタラクティブセッションでは、これは制御がプロンプトに戻る直前に発生します。 Pythonプログラムでは、これはプログラムが終了する直前に発生します。 このようなトップレベルの例外の処理は、sys.excepthookに別の3つの引数関数を割り当てることでカスタマイズできます。

sys.__displayhook__

sys.__excepthook__

これらのオブジェクトには、プログラムの開始時にdisplayhookおよびexcepthookの元の値が含まれています。 displayhookexcepthookが壊れたオブジェクトに置き換えられた場合に復元できるように、これらは保存されます。
sys.exc_info()

この関数は、現在処理されている例外に関する情報を提供する3つの値のタプルを返します。 返される情報は、現在のスレッドと現在のスタックフレームの両方に固有です。 現在のスタックフレームが例外を処理していない場合、情報は、例外を処理しているスタックフレームが見つかるまで、呼び出し元のスタックフレームまたはその呼び出し元から取得されます。 ここで、「例外の処理」とは、「例外句を実行した、または実行した」と定義されています。 どのスタックフレームでも、最後に処理された例外に関する情報にのみアクセスできます。

スタックのどこでも例外が処理されていない場合、3つのNone値を含むタプルが返されます。 それ以外の場合、返される値は(type, value, traceback)です。 それらの意味は次のとおりです。 type は、処理されている例外の例外タイプ(クラスオブジェクト)を取得します。 value は、例外パラメーター(関連値または raise の2番目の引数。例外タイプがクラスオブジェクトの場合は常にクラスインスタンスです)を取得します。 traceback は、例外が最初に発生したポイントでコールスタックをカプセル化するトレースバックオブジェクト(リファレンスマニュアルを参照)を取得します。

exc_clear()が呼び出されると、この関数は、現在のスレッドで別の例外が発生するか、実行スタックが別の例外が処理されているフレームに戻るまで、3つのNone値を返します。

警告

traceback の戻り値を、例外を処理している関数のローカル変数に割り当てると、循環参照が発生します。 これにより、同じ関数内のローカル変数またはトレースバックによって参照されるものがガベージコレクションされるのを防ぐことができます。 ほとんどの関数はトレースバックにアクセスする必要がないため、最善の解決策は、exctype, value = sys.exc_info()[:2]などを使用して例外の型と値のみを抽出することです。 トレースバックが必要な場合は、使用後に必ず削除するか( tryfinally ステートメントで行うのが最適です)、またはで exc_info()を呼び出してください。それ自体が例外を処理しない関数。

ノート

Python 2.2以降、このようなサイクルは、ガベージコレクションが有効になり、到達不能になると自動的に再利用されますが、サイクルの作成を回避する方が効率的です。

sys.exc_clear()

この関数は、現在のスレッドで発生した現在または最後の例外に関連するすべての情報をクリアします。 この関数を呼び出した後、 exc_info()は、現在のスレッドで別の例外が発生するか、実行スタックが別の例外が処理されているフレームに戻るまで、3つのNone値を返します。

この機能は、いくつかのあいまいな状況でのみ必要です。 これらには、最後または現在の例外に関する情報を報告するロギングおよびエラー処理システムが含まれます。 この関数を使用して、リソースを解放し、オブジェクトのファイナライズをトリガーすることもできますが、解放されるオブジェクトがある場合は保証されません。

バージョン2.3の新機能。

sys.exc_type
sys.exc_value
sys.exc_traceback

バージョン1.5以降非推奨:代わりに exc_info()を使用してください。

これらはグローバル変数であるため、現在のスレッドに固有ではないため、マルチスレッドプログラムでの使用は安全ではありません。 例外が処理されていない場合、exc_typeNoneに設定され、他の2つは未定義です。

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のバージョン番号です。 、たとえば2.7
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()は最終的に「のみ」例外を発生させるため、メインスレッドから呼び出された場合にのみプロセスを終了し、例外はインターセプトされません。

sys.exitfunc

この値は実際にはモジュールによって定義されていませんが、ユーザー(またはプログラム)が設定して、プログラム終了時のクリーンアップアクションを指定できます。 設定すると、パラメータのない関数になります。 この関数は、インタプリタが終了したときに呼び出されます。 この方法でインストールできる機能は1つだけです。 終了時に呼び出される複数の関数を許可するには、 atexit モジュールを使用します。

ノート

プログラムがシグナルによって強制終了されたとき、Pythonの致命的な内部エラーが検出されたとき、またはos._exit()が呼び出されたとき、exit関数は呼び出されません。

バージョン2.4以降非推奨:代わりに atexit を使用してください。

sys.flags

構造体シーケンス flags は、コマンドラインフラグのステータスを公開します。 属性は読み取り専用です。

属性

国旗

debug

-d

py3k_warning

-3

division_warning

-Q

division_new

-Qnew

inspect

-i

interactive

-i

optimize

-O または -OO

dont_write_bytecode

-B

no_user_site

-s

no_site

-S

ignore_environment

-E

tabcheck

-t または -tt

verbose

-v

unicode

-U

bytes_warning

-b

hash_randomization

-R

バージョン2.6の新機能。

バージョン2.7.3の新機能: hash_randomization属性。

sys.float_info

float型に関する情報を保持するstructseq。 精度と内部表現に関する低レベルの情報が含まれています。 値は、「C」プログラミング言語の標準ヘッダーファイルfloat.hで定義されているさまざまな浮動小数点定数に対応しています。 詳細については、1999 ISO / IECC規格 [C99] のセクション5.2.4.2.2「フローティングタイプの特性」を参照してください。

属性

float.hマクロ

説明

epsilon

DBL_EPSILON

1と、浮動小数点として表現できる1より大きい最小値との差

dig

DBL_DIG

浮動小数点で忠実に表現できる小数点以下の最大桁数。 下記参照

mant_dig

DBL_MANT_DIG

浮動小数点精度:浮動小数点の仮数の基数-radix桁の数

max

DBL_MAX

表現可能な最大の有限フロート

max_exp

DBL_MAX_EXP

radix**(e-1)が表現可能な有限浮動小数点数であるような最大整数e

max_10_exp

DBL_MAX_10_EXP

10**eが表現可能な有限浮動小数点数の範囲内にあるような最大整数e

min

DBL_MIN

最小の正の正規化フロート

min_exp

DBL_MIN_EXP

radix**(e-1)が正規化されたfloatであるような最小整数e

min_10_exp

DBL_MIN_10_EXP

10**eが正規化されたfloatであるような最小整数e

radix

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進数値を表す文字列が復元されます。

>>> import sys
>>> sys.float_info.dig
15
>>> s = '3.14159265358979'    # decimal string with 15 significant digits
>>> format(float(s), '.15g')  # convert to float and back -> same value
'3.14159265358979'

ただし、有効数字がsys.float_info.digを超える文字列の場合、これが常に当てはまるとは限りません。

>>> s = '9876543211234567'    # 16 significant digits is too many!
>>> format(float(s), '.16g')  # conversion changes value
'9876543211234568'

バージョン2.6の新機能。

sys.float_repr_style

repr()関数がfloatに対してどのように動作するかを示す文字列。 文字列の値が'short'の場合、有限フロートxの場合、repr(x)は、float(repr(x)) == xというプロパティを持つ短い文字列を生成することを目的としています。 これは、Python2.7以降の通常の動作です。 それ以外の場合、float_repr_styleの値は'legacy'であり、repr(x)は2.7より前のバージョンのPythonと同じように動作します。

バージョン2.7の新機能。

sys.getcheckinterval()

通訳者の「チェック間隔」を返します。 setcheckinterval()を参照してください。

バージョン2.3の新機能。

sys.getdefaultencoding()

Unicode実装で使用されている現在のデフォルトの文字列エンコーディングの名前を返します。

バージョン2.0の新機能。

sys.getdlopenflags()

dlopen()呼び出しに使用されるフラグの現在の値を返します。 フラグ定数は、 dl およびDLFCNモジュールで定義されています。 可用性:Unix。

バージョン2.2の新機能。

sys.getfilesystemencoding()

Unicodeファイル名をシステムファイル名に変換するために使用されるエンコーディングの名前を返します。システムのデフォルトエンコーディングが使用されている場合はNoneを返します。 結果の値は、オペレーティングシステムによって異なります。

  • Mac OS Xでは、エンコーディングは'utf-8'です。

  • Unixでは、エンコーディングはnl_langinfo(CODESET)の結果に応じたユーザーの好みであり、nl_langinfo(CODESET)が失敗した場合はNoneです。

  • Windows NT +では、ファイル名はネイティブでUnicodeであるため、変換は実行されません。 getfilesystemencoding()は引き続き'mbcs'を返します。これは、アプリケーションがUnicode文字列をファイル名として使用する場合と同等のバイト文字列に明示的に変換する場合に使用する必要があるエンコーディングです。

  • Windows 9xでは、エンコーディングは'mbcs'です。

バージョン2.3の新機能。

sys.getrefcount(object)
オブジェクトの参照カウントを返します。 getrefcount()への引数として(一時的な)参照が含まれているため、返されるカウントは通常、予想よりも1つ多くなります。
sys.getrecursionlimit()
再帰制限の現在の値、Pythonインタープリタースタックの最大深度を返します。 この制限により、無限再帰がCスタックのオーバーフローを引き起こしてPythonをクラッシュさせるのを防ぎます。 setrecursionlimit()で設定できます。
sys.getsizeof(object[, default])

オブジェクトのサイズをバイト単位で返します。 オブジェクトは、任意のタイプのオブジェクトにすることができます。 すべての組み込みオブジェクトは正しい結果を返しますが、これは実装固有であるため、サードパーティの拡張機能に当てはまる必要はありません。

指定した場合、オブジェクトがサイズを取得する手段を提供しない場合、 default が返されます。 それ以外の場合は、TypeErrorが発生します。

getsizeof()は、オブジェクトの__sizeof__メソッドを呼び出し、オブジェクトがガベージコレクターによって管理されている場合は、ガベージコレクターのオーバーヘッドを追加します。

バージョン2.6の新機能。

sys._getframe([depth])
呼び出しスタックからフレームオブジェクトを返します。 オプションの整数 depth が指定されている場合、スタックの最上位より下で多くの呼び出しが行われるフレームオブジェクトを返します。 それがコールスタックよりも深い場合、ValueErrorが発生します。 depth のデフォルトはゼロで、呼び出しスタックの最上位にフレームを返します。
sys.getprofile()

setprofile()で設定されたプロファイラー関数を取得します。

バージョン2.6の新機能。

sys.gettrace()

settrace()で設定されたトレース関数を取得します。

バージョン2.6の新機能。

sys.getwindowsversion()

現在実行中のWindowsバージョンを説明する名前付きタプルを返します。 名前付き要素は、 majorminorbuildplatformservice_packservice_pack_minor です。 ]、 service_pack_majorsuite_mask 、および product_typeservice_pack には文字列が含まれ、他のすべての値は整数です。 コンポーネントには名前でアクセスすることもできるため、sys.getwindowsversion()[0]sys.getwindowsversion().majorと同等です。 以前のバージョンとの互換性のために、最初の5つの要素のみがインデックスによって取得できます。

platform は、次のいずれかの値になります。

絶え間ない

プラットホーム

0 (VER_PLATFORM_WIN32s)

Windows3.1上のWin32s

1 (VER_PLATFORM_WIN32_WINDOWS)

Windows 95/98 / ME

2 (VER_PLATFORM_WIN32_NT)

Windows NT / 2000 / XP / x64

3 (VER_PLATFORM_WIN32_CE)

Windows CE

product_type は、次のいずれかの値になります。

絶え間ない

意味

1 (VER_NT_WORKSTATION)

システムはワークステーションです。

2 (VER_NT_DOMAIN_CONTROLLER)

システムはドメインコントローラーです。

3 (VER_NT_SERVER)

システムはサーバーですが、ドメインコントローラーではありません。

この関数は、Win32 GetVersionEx()関数をラップします。 これらのフィールドの詳細については、OSVERSIONINFOEX()に関するMicrosoftのドキュメントを参照してください。

可用性:Windows。

バージョン2.3の新機能。

バージョン2.7で変更:名前付きタプルに変更され、 service_pack_minorservice_pack_majorsuite_mask 、および product_type が追加されました。

sys.hexversion

単一の整数としてエンコードされたバージョン番号。 これは、非実稼働リリースの適切なサポートを含め、バージョンごとに増加することが保証されています。 たとえば、Pythonインタープリターが少なくともバージョン1.5.2であることをテストするには、次を使用します。

if sys.hexversion >= 0x010502F0:
    # use some advanced feature
    ...
else:
    # use an alternative implementation or warn the user
    ...

これは、組み込みの hex()関数に渡した結果として表示されたときにのみ実際に意味があるように見えるため、hexversionと呼ばれます。 version_info値は、同じ情報をより人間にわかりやすくエンコードするために使用できます。

hexversionは、次のレイアウトの32ビット数です。

ビット(ビッグエンディアン順)

意味

1-8

PY_MAJOR_VERSION2.1.0a32

9-16

PY_MINOR_VERSION2.1.0a31

17-24

PY_MICRO_VERSION2.1.0a30

25-28

PY_RELEASE_LEVEL(アルファの場合は0xA、ベータの場合は0xB、リリース候補の場合は0xC、最終の場合は0xF

29-32

PY_RELEASE_SERIAL2.1.0a33、最終リリースではゼロ)

したがって、2.1.0a3はhexversion 0x020100a3です。

バージョン1.5.2の新機能。

sys.long_info

Pythonの整数の内部表現に関する情報を保持する構造体シーケンス。 属性は読み取り専用です。

属性

説明

bits_per_digit

各桁に保持されているビット数。 Python整数は、ベース2**long_info.bits_per_digitに内部的に格納されます。

sizeof_digit

数字を表すために使用されるCタイプのバイト単位のサイズ

バージョン2.7の新機能。

sys.last_type
sys.last_value
sys.last_traceback

これらの3つの変数は常に定義されているわけではありません。 これらは、例外が処理されず、インタープリターがエラーメッセージとスタックトレースバックを出力するときに設定されます。 それらの使用目的は、対話型ユーザーがデバッガーモジュールをインポートし、エラーの原因となったコマンドを再実行することなく、事後デバッグを実行できるようにすることです。 (通常、事後デバッガーに入るにはimport pdb; pdb.pm()を使用します。詳細については、 pdb — Pythonデバッガーの章を参照してください。)

変数の意味は、上記の exc_info()からの戻り値の意味と同じです。 (対話型スレッドは1つしかないため、exc_typeなどとは異なり、スレッドセーフはこれらの変数の問題ではありません。)

sys.maxint
Pythonの通常の整数型でサポートされている最大の正の整数。 これは少なくとも2 ** 31-1です。 最大の負の整数は-maxint-1です。非対称性は2の補数の2進演算を使用した結果です。
sys.maxsize
プラットフォームのPy_ssize_tタイプでサポートされる最大の正の整数、したがって最大サイズのリスト、文字列、dict、および他の多くのコンテナーが持つことができます。
sys.maxunicode
Unicode文字でサポートされている最大のコードポイントを与える整数。 この値は、Unicode文字をUCS-2またはUCS-4のどちらとして格納するかを指定する構成オプションによって異なります。
sys.meta_path

finder オブジェクトのリスト。オブジェクトの1つがインポートするモジュールを見つけることができるかどうかを確認するために、find_module()メソッドが呼び出されます。 find_module()メソッドは、少なくともインポートされるモジュールの絶対名で呼び出されます。 インポートするモジュールがパッケージに含まれている場合、親パッケージの__path__属性が2番目の引数として渡されます。 モジュールが見つからない場合、メソッドはNoneを返します。それ以外の場合は、ローダーを返します。

sys.meta_path は、暗黙のデフォルトファインダーまたは sys.path の前に検索されます。

元の仕様については、 PEP 302 を参照してください。

sys.modules
これは、モジュール名をすでにロードされているモジュールにマップする辞書です。 これを操作して、モジュールのリロードやその他のトリックを強制することができます。 このディクショナリからモジュールを削除することは、対応するモジュールオブジェクトで reload()を呼び出すこととではなくであることに注意してください。
sys.path

モジュールの検索パスを指定する文字列のリスト。 環境変数 PYTHONPATH から初期化され、さらにインストールに依存するデフォルト。

プログラムの起動時に初期化されると、このリストの最初の項目path[0]は、Pythonインタープリターを呼び出すために使用されたスクリプトを含むディレクトリです。 スクリプトディレクトリが利用できない場合(例: インタプリタがインタラクティブに呼び出される場合、またはスクリプトが標準入力から読み取られる場合)、path[0]は空の文字列であり、Pythonに現在のディレクトリ内のモジュールを最初に検索するように指示します。 PYTHONPATH の結果として挿入されたエントリの前に、スクリプトディレクトリが挿入されていることに注意してください。

プログラムは、独自の目的でこのリストを自由に変更できます。

バージョン2.3で変更: Unicode文字列は無視されなくなりました。

も参照してください

モジュール site これは、.pthファイルを使用して sys.path を拡張する方法を説明しています。

sys.path_hooks

パス引数を取り、パスのファインダーを作成しようとする呼び出し可能オブジェクトのリスト。 ファインダーを作成できる場合は、呼び出し可能オブジェクトによって返されます。それ以外の場合は、ImportErrorを上げます。

当初は PEP 302 で指定されていました。

sys.path_importer_cache

ファインダーオブジェクトのキャッシュとして機能する辞書。 キーは sys.path_hooks に渡されたパスであり、値は検出されたファインダーです。 パスが有効なファイルシステムパスであるが、 sys.path_hooks に明示的なファインダーが見つからない場合は、Noneが格納され、暗黙のデフォルトファインダーを使用する必要があります。 パスが既存のパスでない場合は、 imp.NullImporter が設定されます。

当初は PEP 302 で指定されていました。

sys.platform

この文字列には、たとえば、プラットフォーム固有のコンポーネントを sys.path に追加するために使用できるプラットフォーム識別子が含まれています。

ほとんどのUnixシステムでは、これはuname -sによって返される小文字のOS名であり、uname -rによって返されるバージョンの最初の部分が追加されています。 'sunos5'Pythonが構築されたとき。 したがって、特定のシステムバージョンをテストする場合を除いて、次のイディオムを使用することをお勧めします。

if sys.platform.startswith('freebsd'):
    # FreeBSD-specific code here...
elif sys.platform.startswith('linux'):
    # Linux-specific code here...

バージョン2.7.3で変更:多くのコードがsys.platform == 'linux2'をチェックし、Linux 2.xと3.xの間に本質的な変更がないため、sys.platformは常にLinux 3.xでも、'linux2'に設定します。 Python 3.3以降では、値は常に'linux'に設定されるため、上記のstartswithイディオムを常に使用することをお勧めします。

他のシステムの場合、値は次のとおりです。

システム

プラットフォーム

Linux(2.x および 3.x)

'linux2'

ウィンドウズ

'win32'

Windows / Cygwin

'cygwin'

Mac OS X

'darwin'

OS / 2

'os2'

OS / 2 EMX

'os2emx'

RiscOS

'riscos'

AtheOS

'atheos'

も参照してください

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のバージョン番号です(例:2.7)。
sys.ps1

sys.ps2

インタプリタのプライマリプロンプトとセカンダリプロンプトを指定する文字列。 これらは、インタプリタがインタラクティブモードの場合にのみ定義されます。 この場合の初期値は'>>> ''... 'です。 文字列以外のオブジェクトがいずれかの変数に割り当てられている場合、インタプリタが新しい対話型コマンドを読み取る準備をするたびに、その str()が再評価されます。 これは、動的プロンプトを実装するために使用できます。
sys.py3kwarning

Python3警告フラグのステータスを含むブール値。 Pythonが-3オプションで起動されたときはTrueです。 (これは読み取り専用と見なす必要があります。別の値に設定しても、Python 3の警告には影響しません。)

バージョン2.6の新機能。

sys.setcheckinterval(interval)
通訳者の「チェック間隔」を設定します。 この整数値は、インタープリターがスレッドスイッチやシグナルハンドラーなどの定期的なものをチェックする頻度を決定します。 デフォルトは100です。これは、100個のPython仮想命令ごとにチェックが実行されることを意味します。 値を大きくすると、スレッドを使用するプログラムのパフォーマンスが向上する場合があります。 値<= 0に設定すると、すべての仮想命令がチェックされ、応答性とオーバーヘッドが最大化されます。
sys.setdefaultencoding(name)

Unicode実装で使用される現在のデフォルトの文字列エンコーディングを設定します。 name が使用可能なエンコーディングと一致しない場合、LookupErrorが発生します。 この関数は、サイトモジュールの実装でのみ使用され、必要に応じてsitecustomizeで使用されることを目的としています。 site モジュールで使用されると、 sys モジュールの名前空間から削除されます。

バージョン2.0の新機能。

sys.setdlopenflags(n)

インタプリタが拡張モジュールをロードするときなど、dlopen()呼び出しにインタプリタが使用するフラグを設定します。 特に、これにより、sys.setdlopenflags(0)と呼ばれる場合、モジュールをインポートするときにシンボルの遅延解決が可能になります。 拡張モジュール間でシンボルを共有するには、sys.setdlopenflags(dl.RTLD_NOW | dl.RTLD_GLOBAL)として呼び出します。 フラグモジュールの記号名は、 dl モジュールまたはDLFCNモジュールのいずれかにあります。 DLFCNが使用できない場合は、 h2py スクリプトを使用して/usr/include/dlfcn.hから生成できます。 可用性:Unix。

バージョン2.2の新機能。

sys.setprofile(profilefunc)

システムのプロファイル関数を設定します。これにより、PythonでPythonソースコードプロファイラーを実装できます。 Pythonプロファイラーの詳細については、 Pythonプロファイラーの章を参照してください。 システムのプロファイル関数は、システムのトレース関数と同様に呼び出されます( settrace()を参照)が、異なるイベントで呼び出されます。たとえば、実行されたコード行ごとに呼び出されません(呼び出し時のみ)。およびreturnですが、例外が設定されている場合でもreturnイベントが報告されます)。 この関数はスレッド固有ですが、プロファイラーがスレッド間のコンテキストスイッチについて知る方法がないため、複数のスレッドが存在する場合にこれを使用することは意味がありません。 また、戻り値は使用されないため、Noneを返すだけで済みます。

プロファイル関数には、 frameevent 、および arg の3つの引数が必要です。 frame は現在のスタックフレームです。 event は文字列です:'call''return''c_call''c_return'、または'c_exception'arg は、イベントタイプによって異なります。

イベントの意味は次のとおりです。

'call'

関数が呼び出されます(または他のコードブロックが入力されます)。 プロファイル関数が呼び出されます。 argNoneです。

'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をクラッシュさせるのを防ぎます。

可能な上限はプラットフォームによって異なります。 深い再帰を必要とするプログラムと、より高い制限をサポートするプラットフォームがある場合、ユーザーは制限をより高く設定する必要がある場合があります。 制限が高すぎるとクラッシュする可能性があるため、これは注意して行う必要があります。

sys.settrace(tracefunc)

システムのトレース関数を設定します。これにより、PythonでPythonソースコードデバッガーを実装できます。 関数はスレッド固有です。 デバッガーが複数のスレッドをサポートするには、デバッグするスレッドごとに settrace()を使用して登録する必要があります。

トレース関数には、 frameevent 、および arg の3つの引数が必要です。 frame は現在のスタックフレームです。 event は文字列です:'call''line''return'、または'exception'arg は、イベントタイプによって異なります。

新しいローカルスコープが入力されるたびに、トレース関数が呼び出されます( event'call'に設定されている場合)。 そのスコープで使用されるローカルトレース関数への参照を返すか、スコープをトレースしない場合はNoneを返す必要があります。

ローカルトレース関数は、それ自体(またはそのスコープでさらにトレースするための別の関数)への参照を返すか、Noneでそのスコープでのトレースをオフにする必要があります。

イベントの意味は次のとおりです。

'call'

関数が呼び出されます(または他のコードブロックが入力されます)。 グローバルトレース関数が呼び出されます。 argNoneです。 戻り値はローカルトレース関数を指定します。

'line'

インタプリタは、新しいコード行を実行するか、ループの条件を再実行しようとしています。 ローカルトレース関数が呼び出されます。 argNoneです。 戻り値は、新しいローカルトレース関数を指定します。 これがどのように機能するかの詳細な説明については、Objects/lnotab_notes.txtを参照してください。

'return'

関数(または他のコードブロック)が返されようとしています。 ローカルトレース関数が呼び出されます。 arg は返される値であり、イベントの原因が例外の発生である場合はNoneです。 トレース関数の戻り値は無視されます。

'exception'

例外が発生しました。 ローカルトレース関数が呼び出されます。 arg はタプル(exception, value, traceback)です。 戻り値は、新しいローカルトレース関数を指定します。

例外が呼び出し元のチェーンに伝播されると、'exception'イベントが各レベルで生成されることに注意してください。

コードおよびフレームオブジェクトの詳細については、標準タイプ階層を参照してください。

sys.settscdump(on_flag)

on_flag がtrueの場合、Pentiumタイムスタンプカウンターを使用してVM測定値のダンプをアクティブにします。 on_flag がオフの場合は、これらのダンプを非アクティブ化します。 この関数は、Pythonが--with-tscでコンパイルされている場合にのみ使用できます。 このダンプの出力を理解するには、PythonソースのPython/ceval.cを読んでください。

バージョン2.4の新機能。

sys.stdin

sys.stdout
sys.stderr

インタプリタの標準の入力、出力、およびエラーストリームに対応するファイルオブジェクト。 stdinは、スクリプトを除くすべてのインタープリター入力に使用されますが、 input()および raw_input()の呼び出しも含まれます。 stdoutは、 print および expression ステートメントの出力、および input()および raw_input()[のプロンプトに使用されます。 X145X]。 インタプリタ自身のプロンプトと(ほとんどすべての)エラーメッセージはstderrに送られます。 stdoutおよびstderrは、組み込みのファイルオブジェクトである必要はありません。文字列引数をとるwrite()メソッドがあれば、どのオブジェクトでもかまいません。 (これらのオブジェクトを変更しても、 os.popen()os.system()、またはexec*()ファミリによって実行されるプロセスの標準I / Oストリームには影響しません。 os モジュールの機能の一覧です。)
sys.__stdin__
sys.__stdout__
sys.__stderr__

これらのオブジェクトには、プログラムの開始時にstdinstderr、およびstdoutの元の値が含まれています。 これらはファイナライズ中に使用され、sys.std*オブジェクトがリダイレクトされているかどうかに関係なく、実際の標準ストリームに出力するのに役立つ可能性があります。

また、壊れたオブジェクトで上書きされた場合に、実際のファイルを既知の作業ファイルオブジェクトに復元するためにも使用できます。 ただし、これを行うための推奨される方法は、前のストリームを置き換える前に明示的に保存し、保存されたオブジェクトを復元することです。

sys.subversion

PythonインタープリターのSubversion情報を表すトリプル(リポジトリ、ブランチ、バージョン)。 repo は、リポジトリの名前'CPython'です。 branch は、'trunk''branches/name'、または'tags/name'のいずれかの形式の文字列です。 version は、インタープリターがSubversionチェックアウトから構築された場合、svnversionの出力です。 リビジョン番号(範囲)と、ローカルで変更があった場合は末尾の「M」が含まれている可能性があります。 ツリーがエクスポートされた場合(またはsvnversionが使用できなかった場合)、ブランチがタグの場合はInclude/patchlevel.hのリビジョンです。 それ以外の場合はNoneです。

バージョン2.5の新機能。

ノート

Pythonは現在Gitを使用して開発されています。 したがって、最近のPython 2.7バグ修正リリースでは、 subversion にプレースホルダー情報が含まれています。 Python3.3で削除されました。

sys.tracebacklimit
この変数を整数値に設定すると、未処理の例外が発生したときに出力されるトレースバック情報の最大レベル数が決まります。 デフォルトは1000です。 0以下に設定すると、すべてのトレースバック情報が抑制され、例外のタイプと値のみが出力されます。
sys.version
Pythonインタープリターのバージョン番号に加えて、使用されるビルド番号とコンパイラーに関する追加情報を含む文字列。 この文字列は、インタラクティブインタプリタの起動時に表示されます。 そこからバージョン情報を抽出するのではなく、 version_infoplatform モジュールによって提供される関数を使用してください。
sys.api_version

このインタプリタのCAPIバージョン。 プログラマーは、Pythonと拡張モジュールの間でバージョンの競合をデバッグするときにこれが役立つ場合があります。

バージョン2.3の新機能。

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などと同等です。

バージョン2.0の新機能。

バージョン2.7で変更:名前付きコンポーネント属性を追加

sys.warnoptions
これは、警告フレームワークの実装の詳細です。 この値は変更しないでください。 警告フレームワークの詳細については、 warnings モジュールを参照してください。
sys.winver
Windowsプラットフォームでレジストリキーを形成するために使用されるバージョン番号。 これは、PythonDLLに文字列リソース1000として保存されます。 値は通常、バージョンの最初の3文字です。 これは、情報提供の目的で sys モジュールで提供されます。 この値を変更しても、Pythonで使用されるレジストリキーには影響しません。 可用性:Windows。

引用

C99
ISO / IEC 9899:1999。 「プログラミング言語–C」 この規格の公開ドラフトは、 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdfで入手できます。