这看起来很简单。从文件名列表开始:l = ["hello1","hello2","hello3",
"hello","hello","hello"]
然后迭代这些文件名,如果找到重复的文件名,则后面的数字递增1。在
^{pr2}$
这会给你留下一本字典,比如:{"hello1": "hello1",
"hello2": "hello2",
"hello3": "hello3",
"hello": "hello",
"hello4": "hello",
"hello5": "hello"}
当然,如果您不关心将原始名称映射到重复名称,您可以删除该部分。在result = set()
for fname in l:
orig = fname
i=1
while fname in result:
fname = orig + str(i)
i += 1
result.add(fname)
如果你以后想要一张单子,那就把它投下去。在final = list(result)
请注意,如果您要创建文件,这正是tempfile模块的设计目的。在import tempfile
l = ["hello1","hello2","hello3",
"hello","hello","hello"]
fs = [tempfile.NamedTemporaryFile(prefix=fname, delete=False, dir="/some/directory/") for fname in l]
这不会创建很好地递增的文件名,但保证它们是唯一的,fs将是(打开)文件对象的列表,而不是名称列表,尽管{}将为您提供文件名。在