我必须存储一些临时文件(它不必是人类可读的)。由于我是从不同的线程创建它们的,所以我不想在线程之间进行困难的通信 - 这个名称是保留的还是已经使用过的。
最佳选择似乎是使用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
答案 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