uuid — RFC 4122に準拠したUUIDオブジェクト—Pythonドキュメント

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

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_lowfields 引数として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)

hexbytesbytes_lefields 、または int のいずれかを指定する必要があります。 version 引数はオプションです。 指定された場合、結果のUUIDは、 RFC 4122 に従って設定されたバリアントとバージョン番号を持ち、指定された hexbytes のビットをオーバーライドします。 ]、 bytes_lefields 、または 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_lowtime_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ビット

time

60ビットのタイムスタンプ

clock_seq

14ビットのシーケンス番号

UUID.hex
32文字の16進文字列としてのUUID。
UUID.int
128ビット整数としてのUUID。
UUID.urn
RFC 4122 で指定されているURNとしてのUUID。
UUID.variant
UUIDの内部レイアウトを決定するUUIDバリアント。 これは、定数 RESERVED_NCSRFC_4122RESERVED_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')