Для копирования файлов понадобилось переименовывать их из одной маски в другую, например нужно скопировать все файлы по маске 02bh*.* с переименовыванием в маску bh02*.*.
Не найдя такой функции, написал сам:
def maskrename(msk1, msk2, filename):
"rename filname from file mask msk1 to file mask msk2"
import re
trmsk = lambda msk, grc: (('\%i' % grc)+trmsk(msk[1:], grc+1) if msk[0] in '*?' else (msk[0]+trmsk(msk[1:], grc))) if msk else ""
myfntrans = lambda msk: "(?i)"+msk.replace(".", "\.").replace("*", "(.*)").replace("?", "(.)") + "$"
return re.sub(myfntrans(msk1), trmsk(msk2, 1), filename)
Test:
print maskrename("02bh*.*", "bh02*.*", "02BH1908.er8")
Требуется python версии 2.5 и выше.
Wednesday, August 22, 2007
Subscribe to:
Posts (Atom)