适合作为文件名的Python哈希

适合作为文件名的Python哈希,python,windows,hash,filenames,Python,Windows,Hash,Filenames,我必须存储一些临时文件(它不必是人类可读的)。因为我是从不同的线程创建它们的,所以我不想在线程之间进行困难的通信——保留了哪个名称或已经使用了哪个名称等等 最好的选择似乎是使用hash 例如: 我在“Žilina”、“54845”块下有很多记录。我想将它们临时存储到一些txt文件中 所以我会这样做: write_into_temp_file(name_of_the_file=hashlib.file_name_hash('Žilina54845')) 我可以肯定(99.9999%)不会与另一个

我必须存储一些临时文件(它不必是人类可读的)。因为我是从不同的线程创建它们的,所以我不想在线程之间进行困难的通信——保留了哪个名称或已经使用了哪个名称等等

最好的选择似乎是使用
hash

例如:

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

所以我会这样做:

write_into_temp_file(name_of_the_file=hashlib.file_name_hash('Žilina54845'))
我可以肯定(99.9999%)不会与另一个临时文件发生任何冲突

我试图从这个问题中找到一些灵感,但是那些
散列
包含不允许作为文件名一部分的符号。例如
==

编辑:


我的操作系统是Windows,通常哈希不包含任何特殊字符

from hashlib import sha512
import base64

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

print hash_filename

>>> e4cd8ae2b7a1c0eb44a987f5b89e43b892709a4b9a072b0fa579715da5becf40318cbc972131485f2132209a76a0ffc199973072665c639d628f641c8b872c8
如果您确实喜欢使用base64表示法,您可以将“=”(最后一个字符)替换为“


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

from hashlib import sha512
import base64

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

print hash_filename

>>> e4cd8ae2b7a1c0eb44a987f5b89e43b892709a4b9a072b0fa579715da5becf40318cbc972131485f2132209a76a0ffc199973072665c639d628f641c8b872c8
如果您确实喜欢使用base64表示法,您可以将“=”(最后一个字符)替换为“


为什么不使用?我必须依赖于唯一的字符串。事实上,在一个线程中可以创建更多的文件。我不明白,是什么阻止您为每个文件生成UUID?为什么不使用?我必须依赖于唯一的字符串。事实上,在一个线程中可以创建更多的文件。我不明白,是什么阻止了您为每个文件生成UUID?