#9.8.3 消除缺失的编号
"""
1.spam001.txt,spam002.txt,spam005.txt,如此。将前边的消除,然后后边逐一递增
2.空出一些编号,指定空出区域。然后修改编号。
"""
import re,os,shutil
#find_path=input("输入要查找的目录:")
#find_path=os.path.abspath(find_path)
find_path=os.path.abspath("D:\pytest")
filenameReg=re.compile(r"(spam(\d+)\.txt$)")
#将合格的文件名添加为列表
file_list=[]
for name in os.listdir(find_path):
reg_name=filenameReg.search(name)
if reg_name:
file_list.append(reg_name.group(1))
#空余值设计,不做过多类型及数值区域判断,输入区域符合正常范围
space=input("请确认是否留下空白区,以备后用(Y/N)")
#预留配对修改名为字典
chname_list={}
if space.lower()=='y':
rang1=input("输入空白区的起始值(包含此值为空):")
rang2=input("输入空白区的结束值(包含此值为空):")
rang=range(int(rang1),int(rang2)+1)
rang=list(rang)
print("留空区为:"+str(rang))
#将需要处理的文件名配对为字典
list1= file_list[:rang[0]-1].copy()
for file in list1:
print(list1.index(file))
filename="spam"+str(list1.index(file)+1).rjust(3,'0')+".txt"
chname_list[file]=filename
list2= file_list[rang[0]-1:].copy()
for file in list2:
filename="spam"+str(list2.index(file)+rang[-1]+1).rjust(3,'0')+".txt"
chname_list[file]=filename
elif space.lower()=='n':
#将需要处理的文件名配对为字典
for file in file_list:
filename="spam"+str(file_list.index(file)+1).rjust(3,'0')+".txt"
chname_list[file]=filename
else:
print("Input error")
#对字典进行操作move
os.chdir(find_path)
for k,v in chname_list.items():
shutil.move(k,v)
print("move {} to {}".format(k,v))
print("done")