Python哈希适合作为文件名

时间:2016-01-07 09:15:23

标签: python windows hash filenames

我必须存储一些临时文件(它不必是人类可读的)。由于我是从不同的线程创建它们的,所以我不想在线程之间进行困难的通信 - 这个名称是保留的还是已经使用过的。

最佳选择似乎是使用hash

示例:

我在“Žilina”,“54845”区块下有很多记录。我想将它们临时存储到某个txt文件中。

所以我会这样做:

write_into_temp_file(name_of_the_file=hashlib.file_name_hash('Žilina54845'))

我可以肯定(99.9999%)不会与另一个临时文件发生任何冲突。

我试图在这个问题Short Python alphanumeric hash with minimal collisions中找到一些灵感,但那些hashes包含不允许作为文件名的一部分的符号。例如==

修改

我的操作系统是Windows

1 个答案:

答案 0 :(得分:-1)

通常哈希不包含任何特殊字符......

from hashlib import sha512
import base64

my_file_name="myfilenameverylongtohide.myextension"
hash_filename= sha512(my_file_name).hexdigest()

print hash_filename

>>> e4cd8ae2b7a1c0eb44a987f5b89e43b892709a4b9a072b0fa579715da5becf40318cbc972131485f2132209a76a0ffc199973072665c639d628f641c8b872c8

如果你肯定更喜欢使用base64表示法,你可以用“

替换”=“(最后一个字符)
b64_hash_filename= base64.b64encode(hash_filename).replace('=','')
print b64_hash_filename

>>> YWU0Y2Q4YWUyYjdhMWMwZWI0NGE5ODdmNWI4OWU0M2I4OTI3MDlhNGI5YTA3MmIwZmE1Nzk3MTVkYTViZWNmNDAzMThjYmM5NzIxMzE0ODVmMjEzMjIwOWE3NmEwZmZjMTk5OTczMDcyNjY1YzYzOWQ2MjhmNjQxYzhiODcyYzg