编码url以缩短唯一文件名

时间:2016-10-29 07:26:10

标签: python

我想根据网址将html保存到文件中。

获取url的唯一名称我正在使用uuid。

>>> url = "https://www.google.co.in/?gfe_rd=cr&ei=-koUWPf4HqzT8ge2g6HoBg&gws_rd=ssl"
>>> uuidstring = str(uuid.uuid5(uuid.NAMESPACE_DNS, url))

但我想进一步缩短名称。有没有办法将字符串缩短为唯一的小字符串。

我试过base64,但我想不出来。

>>> uuid.UUID(uuidstring).bytes.encode('base64').rstrip('=\n').replace('/', '_')
>>> AttributeError: 'bytes' object has no attribute 'encode'

关联问题:Convert UUID 32-character hex string into a "YouTube-style" short id and back

1 个答案:

答案 0 :(得分:4)

像这样使用base64模块,它可以处理二进制数据,然后执行解码为ascii(因为base64是ascii就可以了。)

import uuid,base64

url = "https://www.google.co.in/?gfe_rd=cr&ei=-koUWPf4HqzT8ge2g6HoBg&gws_rd=ssl"
uuidstring = str(uuid.uuid5(uuid.NAMESPACE_DNS, url))
z=base64.encodebytes(uuid.UUID(uuidstring).bytes).decode("ascii").rstrip('=\n').replace('/', '_')
print(z)

结果:

pvEA9qOdX8COYyJf8zgzRA