我试图将大整数写入文件。
该文件包含一个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?
答案 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'