从python中的java代码重现uuid

Jon*_*Jon 5 python java uuid

在Java应用程序中,创建文件,其中文件名是从使用该函数创建的蛋白质序列(例如TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN)生成的UUID UUID.nameUUIDFromBytes.这导致UUID c6a0deb5-0c4f-3961-9d19-3f0fde0517c2.

UUID.namedUUIDFromBytes不将名称空间作为参数,而在python uuid.uuid3中则不行.根据JDK使用什么命名空间来生成名称为UUIDFromBytes的UUID?,命名空间应该作为名称的一部分传递,但是不再可能更改java代码.

有没有办法在python代码中创建自定义命名空间,以便它将生成与Java代码相同的UUID?

And*_*zlo 13

nameUUIDFromBytes只接受一个参数,它应该是命名空间和名称的串联,就像你说的那样.namespace参数应该是a UUID,据我所知,它们没有null定义值.

" nulluuid"可以uuid3像这样传递给Python .只要命名空间具有bytes属性(使用Python 2和3测试),这应该有效:

class NULL_NAMESPACE:
    bytes = b''
uuid.uuid3(NULL_NAMESPACE, 'TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN')
# returns: UUID('c6a0deb5-0c4f-3961-9d19-3f0fde0517c2')
Run Code Online (Sandbox Code Playgroud)

  • 而不是创建类,你可以使用一些(有些难看的)代码来内联:`type('',(),dict(bytes = b''))()`(来自[this answer](https: //stackoverflow.com/a/1123054)到另一个问题).那么你可以根据需要做一个内衬,例如:`python -c"import uuid; print uuid.uuid3(type('',(),dict(bytes = b''))(),'TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN ")"`. (2认同)