假设我正在编写名为 foo.001
的文件,但是 001
被替换为基于实际存在的文件的最低空闲索引。写这个最优雅的方法是什么?这是我用的东西,但看起来不太好,是吗?
base='foo'
i=0
while True:
i+=1; name=base+'.%03d'%i
if not os.path.exists(name): break
# use name here
欢迎更好的建议。
编辑:查找不会并行运行,而且我需要最低的未使用索引(并行查找并不总是给出最低的索引)。还假设我不能列出所有已使用的名称,只能测试一个是否存在(我不仅想将它用于文件,而且还想将其用于一般的命名对象,并且列表并不总是可能或有效)。
最佳答案
相同数量的语句,但可能稍微更具可读性。使用itertools.count
:
from itertools import count
def next_available(base):
for ext in count(start=1):
name = '{}.{:03d}'.format(base, ext)
if not os.path.exists(name):
return name
关于python - 寻找最低未使用号码的优雅和简短(pythonic)方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35548198/