uuid — RFC 4122 に準拠したUUIDオブジェクト
ソースコード: :source: `Lib / uuid.py`
このモジュールは、不変の UUID オブジェクト( UUID クラス)と関数 uuid1()、 uuid3()、 uuid4を提供します。 ()、 uuid5()は、 RFC 4122 で指定されているバージョン1、3、4、および5のUUIDを生成します。
一意のIDだけが必要な場合は、おそらく uuid1()または uuid4()を呼び出す必要があります。 uuid1()は、コンピューターのネットワークアドレスを含むUUIDを作成するため、プライバシーを侵害する可能性があることに注意してください。 uuid4()はランダムなUUIDを作成します。
基盤となるプラットフォームからのサポートに応じて、 uuid1()は「安全な」UUIDを返す場合と返さない場合があります。 安全なUUIDは、2つのプロセスが同じUUIDを取得できないようにする同期メソッドを使用して生成されるUUIDです。 UUID のすべてのインスタンスには、次の列挙を使用してUUIDの安全性に関する情報を中継するis_safe
属性があります。
- class uuid.SafeUUID
バージョン3.7の新機能。
- safe
UUIDは、マルチプロセッシングで安全な方法でプラットフォームによって生成されました。
- unsafe
UUIDは、マルチプロセッシングで安全な方法で生成されませんでした。
- unknown
プラットフォームは、UUIDが安全に生成されたかどうかに関する情報を提供しません。
- class uuid.UUID(hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None, *, is_safe=SafeUUID.unknown)
32個の16進数の文字列、 bytes 引数としてビッグエンディアン順の16バイトの文字列、 bytes_le [としてリトルエンディアン順の16バイトの文字列のいずれかからUUIDを作成します。 X197X]引数、6つの整数のタプル(32ビット time_low 、16ビット time_mid 、16ビット time_hi_version 、8ビット clock_seq_hi_variant 、8ビット clock_seq_low 、 fields 引数として48ビット node )、または intとして単一の128ビット整数引数。 16進数の文字列を指定する場合、中括弧、ハイフン、およびURNプレフィックスはすべてオプションです。 たとえば、これらの式はすべて同じUUIDを生成します。
UUID('{12345678-1234-5678-1234-567812345678}') UUID('12345678123456781234567812345678') UUID('urn:uuid:12345678-1234-5678-1234-567812345678') UUID(bytes=b'\x12\x34\x56\x78'*4) UUID(bytes_le=b'\x78\x56\x34\x12\x34\x12\x78\x56' + b'\x12\x34\x56\x78\x12\x34\x56\x78') UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678)) UUID(int=0x12345678123456781234567812345678)
hex 、 bytes 、 bytes_le 、 fields 、または int のいずれかを指定する必要があります。 version 引数はオプションです。 指定された場合、結果のUUIDは、 RFC 4122 に従って設定されたバリアントとバージョン番号を持ち、指定された hex 、 bytes のビットをオーバーライドします。 ]、 bytes_le 、 fields 、または int 。
UUIDオブジェクトの比較は、それらの UUID.int 属性を比較することによって行われます。 非UUIDオブジェクトと比較すると、 TypeError が発生します。
str(uuid)
は、12345678-1234-5678-1234-567812345678
の形式で文字列を返します。ここで、32桁の16進数はUUIDを表します。
UUID インスタンスには、次の読み取り専用属性があります。
- UUID.bytes
- 16バイト文字列としてのUUID(ビッグエンディアンバイト順の6つの整数フィールドを含む)。
- UUID.bytes_le
- 16バイト文字列としてのUUID( time_low 、 time_mid 、および time_hi_version はリトルエンディアンバイト順)。
- UUID.fields
UUIDの6つの整数フィールドのタプル。これは、6つの個別の属性および2つの派生属性としても使用できます。
分野
意味
time_low
UUIDの最初の32ビット
time_mid
UUIDの次の16ビット
time_hi_version
UUIDの次の16ビット
clock_seq_hi_variant
UUIDの次の8ビット
clock_seq_low
UUIDの次の8ビット
node
UUIDの最後の48ビット
60ビットのタイムスタンプ
clock_seq
14ビットのシーケンス番号
- UUID.hex
- 32文字の16進文字列としてのUUID。
- UUID.int
- 128ビット整数としてのUUID。
- UUID.urn
- RFC 4122 で指定されているURNとしてのUUID。
- UUID.variant
- UUIDの内部レイアウトを決定するUUIDバリアント。 これは、定数 RESERVED_NCS 、 RFC_4122 、 RESERVED_MICROSOFT 、または RESERVED_FUTURE のいずれかになります。
- UUID.version
- UUIDバージョン番号(1から5は、バリアントが RFC_4122 の場合にのみ意味があります)。
- UUID.is_safe
プラットフォームがマルチプロセッシングで安全な方法でUUIDを生成したかどうかを示す SafeUUID の列挙。
バージョン3.7の新機能。
uuid モジュールは、次の関数を定義します。
- uuid.getnode()
ハードウェアアドレスを48ビットの正の整数として取得します。 これを初めて実行すると、別のプログラムが起動する可能性があり、非常に時間がかかる可能性があります。 ハードウェアアドレスを取得するすべての試みが失敗した場合、 RFC 4122 で推奨されているように、マルチキャストビット(最初のオクテットの最下位ビット)が1に設定されたランダムな48ビット番号を選択します。 ]。 「ハードウェアアドレス」とは、ネットワークインターフェースのMACアドレスを意味します。 複数のネットワークインターフェイスを備えたマシンでは、ユニバーサルに管理されたMACアドレス(つまり、 最初のオクテットの2番目の最下位ビットが unset )である場合、ローカルで管理されるMACアドレスよりも優先されますが、他の順序の保証はありません。
バージョン3.7で変更:ローカルに管理されたMACアドレスよりも、ユニバーサルに管理されたMACアドレスが優先されます。前者はグローバルに一意であることが保証されているのに対し、後者はそうではないためです。
- uuid.uuid1(node=None, clock_seq=None)
- ホストID、シーケンス番号、および現在の時刻からUUIDを生成します。 node が指定されていない場合、 getnode()を使用してハードウェアアドレスを取得します。 clock_seq が指定されている場合は、シーケンス番号として使用されます。 それ以外の場合は、ランダムな14ビットのシーケンス番号が選択されます。
- uuid.uuid3(namespace, name)
- 名前空間識別子(UUID)と名前(文字列)のMD5ハッシュに基づいてUUIDを生成します。
- uuid.uuid4()
- ランダムなUUIDを生成します。
- uuid.uuid5(namespace, name)
- 名前空間識別子(UUID)と名前(文字列)のSHA-1ハッシュに基づいてUUIDを生成します。
uuid モジュールは、 uuid3()または uuid5()で使用する次の名前空間識別子を定義します。
- uuid.NAMESPACE_DNS
- この名前空間を指定すると、 name 文字列は完全修飾ドメイン名になります。
- uuid.NAMESPACE_URL
- この名前空間を指定すると、 name 文字列はURLになります。
- uuid.NAMESPACE_OID
- この名前空間を指定すると、 name 文字列はISOOIDになります。
- uuid.NAMESPACE_X500
- この名前空間を指定すると、 name 文字列はDERまたはテキスト出力形式のX.500DNになります。
uuid モジュールは、variant
属性の可能な値に対して次の定数を定義します。
- uuid.RESERVED_NCS
- NCS互換性のために予約されています。
- uuid.RFC_4122
- RFC 4122 で指定されたUUIDレイアウトを指定します。
- uuid.RESERVED_MICROSOFT
- Microsoftとの互換性のために予約されています。
- uuid.RESERVED_FUTURE
- 将来の定義のために予約されています。
も参照してください
- RFC 4122 -Universally Unique IDentifier(UUID)URN名前空間
- この仕様は、UUIDのUniform Resource Name名前空間、UUIDの内部形式、およびUUIDを生成する方法を定義します。
例
uuid モジュールの一般的な使用例を次に示します。
>>> import uuid
>>> # make a UUID based on the host ID and current time
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
>>> # make a UUID using an MD5 hash of a namespace UUID and a name
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
>>> # make a random UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
>>> # make a UUID using a SHA-1 hash of a namespace UUID and a name
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
>>> # make a UUID from a string of hex digits (braces and hyphens ignored)
>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
>>> # convert a UUID to a string of hex digits in standard form
>>> str(x)
'00010203-0405-0607-0809-0a0b0c0d0e0f'
>>> # get the raw 16 bytes of the UUID
>>> x.bytes
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
>>> # make a UUID from a 16-byte string
>>> uuid.UUID(bytes=x.bytes)
UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')