簡體   English   中英

Python如何基於文件內容創建UUID

[英]Python How to Create UUID Based on File Contents

我正在查看文檔 ,在示例部分中,我沒有看到如何基於文件內容創建UUID。 谷歌也沒有幫助我。

我試過這個:

>>> import uuid
>>> data = open('/media/emmc/DCIM/100ABC06/00059.JPG','rb')
>>> contents = data.read()
>>> len(contents)
9155
>>> uuid = uuid.UUID(contents)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/uuid.py", line 134, in __init__
ValueError: badly formed hexadecimal UUID string

這個:

>>> uuid = uuid.UUID(str(contents))
>>> uuid = uuid.UUID(contents.decode('ascii'))
>>> uuid = uuid.UUID(contents.decode('utf8'))

請幫助我了解如何基於Python 2.7中的文件內容生成UUID。

如果要創建文件內容的哈希,則可能不需要UUID。 相反,您應該使用hashlib和MD5,SHA-1,SHA-256或任何其他支持的算法來創建文件的指紋。

將字符串傳遞給uuid.UUID() ,字符串必須是32或16個十六進制數字。

請參閱文檔https://docs.python.org/2/library/uuid.html

從一個32位十六進制數字的字符串,一個16字節的字符串作為bytes參數創建一個UUID,一個16字節的字符串,以little-endian順序作為bytes_le參數,一個六元組的元組(32位time_low,16- bit time_mid,16-bit time_hi_version,8-bit clock_seq_hi_variant,8-bit clock_seq_low,48-bit node)作為fields參數,或者單個128位整數作為int參數。 當給出一個十六進制數字字符串時,花括號,連字符和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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM