编写一个程序, 在一个文件夹中, 找到所有带指定前缀的文件, 诸如 spam001.txt,spam002.txt 等,并定位缺失的编号(例如存在 spam001.txt 和 spam003.txt, 但不存在 spam002.txt)。让该程序对所有后面的文件改名, 消除缺失的编号。
import re
import os
import sys
import shutil
import zipfile
FilenamesList=[]
cwd=os.getcwd()
regrex=re.compile(r'spam\d{3}.txt')
#从指定文件夹里找出符合要求的文件,并将文件的绝对路径放到FilenamesList里面
for folder,subfolders,filenames in os.walk(os.path.join(cwd,'test_tree\\')):
for x in filenames:
if regrex.search(x).group()!=None:
FilenamesList.append(os.path.join(folder,x))
FilenamesList.sort()#给FilenamesList排序
print(FilenamesList)
num=1
#检查FilenamesList里面遗漏的文件,显示出来
for x in FilenamesList:
# print(int(x[-7:-4]))
while True:
if int(x[-7:-4])==num:
break
print('lost spam'+str(num))
num+=1
num+=1
num=1
#将所有的文件同一命名
for x in FilenamesList:
y=x[:-7]+('%03d'%num)+'.txt'
print(y)
num+=1
shutil.move(x,y)
这个程序还是有点不完善,不过当做练习要不要太在意这些东西了。