将uuid4大整数添加到文件

时间:2017-02-18 06:58:17

标签: python python-3.x

我试图将大整数写入文件。

该文件包含一个8字节长的ID - 我想在文件中写一个新的随机ID。我使用uuid4生成一个看起来正确的随机数,但是非常大。

new_id = str(uuid.uuid4().int>>64) # generate a 64bit ID.
foo = fi.read() # read current file
bar = re.search(b'MyOLDID', foo) # search for value
fi.seek(bar.start())
old_id = fi.read(8)
new_id = uuid.uuid4().int>>64 # generate ID.    
faz = foo.replace(bytes(old_id), new_id)

如何用新的id替换旧的id?

1 个答案:

答案 0 :(得分:1)

您可以使用os.urandom获取随机字节:

In [1]: import os

In [2]: os.urandom(8)
Out[2]: b'\xe2\xf4~_n.\xe0X'

(来自IPython会话的示例)

如果您想要可读字符,请使用例如对随机数据进行编码。 BASE64。

In [3]: import base64

In [4]: base64.b64encode(os.urandom(6))
Out[4]: b'NeCBB8jF'

编码过程使数据更长,因此在这种情况下只需要6个字节。

如果您需要数字:

In [5]: ''.join(str(j) for j in os.urandom(4))[:8]
Out[5]: '22310824'