37,738
社区成员
发帖
与我相关
我的任务
分享
#coding=utf-8
import re;
import os;
import os.path;
#从路径path下提取文件名并格式化
def FormatFileNames(path):
files = [_f for _f in os.listdir(path) if os.path.isfile(os.path.join(path, _f))];
formattedNames = {};
for _f in files:
all = re.findall(r"\d+", _f);
all = [int(_i) for _i in all];
formattedNames[tuple(all)] = _f;
keys = sorted(formattedNames);
formattedNames = [(formattedNames[_i], _i) for _i in keys];
return formattedNames;
#检查文件名合法性
def CheckFileNames(formattedNames):
fn = formattedNames;
if(fn and fn[0][1].count(1) != len(fn[0][1])): return 0;
for _fni in range(1, len(fn)):
seqPre, seqCur = fn[_fni-1][1], fn[_fni][1];
seqPreLen, seqCurLen = len(seqPre), len(seqCur);
minSeqLen = min(seqPreLen, seqCurLen);
for _si in range(minSeqLen):
if(seqCur[_si] - seqPre[_si] == 1):
for _ci in range(_si + 1, seqCurLen):
if(seqCur[_ci] != 1): return _fni;
if(_si != seqPreLen - 1):
for _pi in range(_si + 1, seqPreLen):
if(seqPre[_pi] == 1): return _fni;
break;
else:
return _fni;
return None;
mypath = "f:/testtest/";
formattedNames = FormatFileNames(mypath);
res = CheckFileNames(formattedNames);
if(res != None):
print("invalid filename: ", formattedNames[res][0]);
else:
print(":)");