题目
编写一个程序,在一个文件夹中,找到所有带指定前缀的文件,诸如 spam001.txt,spam002.txt 等,并定位缺失的编号(例如存在 spam001.txt 和 spam003.txt,但不存在 spam002.txt)。让该程序对所有后面的文件改名,消除缺失的编号。
作为附加的挑战,编写另一个程序,在一些连续编号的文件中,空出一些编号,
以便加入新的文件。
代码如下
先模拟生成文件
import re
import os
import random
path=r'yourpath'
for i in range(1,10):
#获取随机数,如果是奇数就跳过
if random.randint(1,10) %2==0 :
filename='test_'+str(i).rjust(2,'0')+'.txt'
with open(path+os.sep+filename,'w') as f:
f.close()
接下来重新编号
# 先把文件名 和 序号 存入字典中
filenamedict={}
for filename in os.listdir(path):
if filename.startswith('test') and filename.endswith('.txt'):
#print(filename)
filenamedict[filename]=''.join(re.findall('\d+',filename))
# 对字典按照value排序
filenamedict = sorted(filenamedict.items(), key=lambda x: x[1])
# 排序完,按照顺序从1开始重新编号生成文件
for i in range(len(filenamedict)):
os.rename(path+os.sep+(filenamedict[i][0]),path+os.sep+'test_'+str(i+1).rjust(2,'0')+'.txt')