uuid
uuid — UUID objects according to RFC 4122
2.5版本中的新功能。
该模块提供不可变的UUID
对象(UUID
类)和功能uuid1()
,uuid3()
,uuid4()
,uuid5()
如在指定生成版本1,3,4和5点的UUID
RFC 4122
。
如果你想要的只是一个唯一的ID,你应该打电话uuid1()
或uuid4()
。请注意,这uuid1()
可能会危害隐私,因为它会创建一个包含计算机网络地址的UUID。uuid4()
创建一个随机的UUID。
class uuid.UUID([hex[, bytes[, bytes_le[, fields[, int[, version]]]]]])
从32个十六进制数字的字符串中创建一个UUID,一个16字节
的字符串作为字节
参数,一个16字节
的字符串,以little-endian顺序作为bytes_le
参数,一个由6个整数组成的元组(32位time_low
,16- 作为字段
参数,或者作为int
参数的单个128位整数,作为字段
参数的位时间_mid_
,16位time_hi_version
,8位clock_seq_hi_variant
,8位clock_seq_low
,48位节点
)。当给出一串十六进制数字时,大括号,连字符和URN前缀都是可选的。例如,这些表达式都产生相同的UUID:
UUID('{12345678-1234-5678-1234-567812345678}')
UUID('12345678123456781234567812345678')
UUID('urn:uuid:12345678-1234-5678-1234-567812345678')
UUID(bytes='\x12\x34\x56\x78'*4)
UUID(bytes_le='\x78\x56\x34\x12\x34\x12\x78\x56' +
'\x12\x34\x56\x78\x12\x34\x56\x78')
UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))
UUID(int=0x12345678123456781234567812345678)
正好一个十六进制
,字节
,bytes_le
,字段
,或INT
必须给予。该版本的
参数是可选的; 如果给定的,所得到的UUID将具有其变体和版本号根据RFC 4122设置,从而覆盖在给定的比特十六进制
,字节
,bytes_le
,字段
,或INT
。
UUID
实例具有这些只读属性:
UUID.bytes
UUID作为一个16字节的字符串(包含以big-endian字节顺序的六个整数字段)。
UUID.bytes_le
UUID作为16字节的字符串(以little-endian字节顺序包含time_low
,time_mid
和time_hi_version
)。
UUID.fields
UUID的六个整数字段的元组,它们也可用作六个单独的属性和两个派生属性:
领域 | 含义 |
---|---|
time_low | UUID的前32位 |
time_mid | UUID的接下来的16位 |
time_hi_version | UUID的接下来的16位 |
clock_seq_hi_variant | UUID的接下来的8位 |
clock_seq_low | UUID的接下来的8位 |
节点 | UUID的最后48位 |
时间 | 60位时间戳 |
clock_seq | 14位序列号 |
UUID.hex
UUID作为32个字符的十六进制字符串。
UUID.int
UUID是一个128位整数。
UUID.urn
UUID作为RFC4122中规定的URN。
UUID.variant
UUID变体,它确定UUID的内部布局。这将是一个常量RESERVED_NCS
,RFC_4122
,RESERVED_MICROSOFT
,或RESERVED_FUTURE
。
UUID.version
UUID版本号(1到5,仅在变体时才有意义RFC_4122
)。
该uuid
模块定义了以下功能:
uuid.getnode()
获取硬件地址为48位正整数。这是第一次运行,它可能会启动一个单独的程序,可能会很慢。如果所有尝试获取硬件地址都失败,我们选择一个随机的48位数字,其第8位设置为1,如RFC 4122中推荐的那样。“硬件地址”表示网络接口的MAC地址,以及具有多个网络接口可以返回其中任何一个的MAC地址。
uuid.uuid1([node[, clock_seq]])
从主机ID,序列号和当前时间生成一个UUID。如果没有给出节点
,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
当指定此名称
空间时,名称
字符串是完全限定的域名。
uuid.NAMESPACE_URL
当这个名字
空间被指定时,名字
字符串就是一个URL。
uuid.NAMESPACE_OID
当这个名字
空间被指定时,名字
字符串就是一个ISO OID。
uuid.NAMESPACE_X500
当指定此名称
空间时,名称
字符串是DER中的X.500 DN或文本输出格式。
该uuid
模块为该variant
属性的可能值定义了以下常量:
uuid.RESERVED_NCS
保留用于NCS兼容性。
uuid.RFC_4122
指定RFC 4122中
给出的UUID布局。
uuid.RESERVED_MICROSOFT
保留用于Microsoft兼容性。
uuid.RESERVED_FUTURE
留作未来定义。
1.例子
以下是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
'\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')