消除缺失的编号:Python编程快速上手-让繁琐工作自动化练习题

题目

编写一个程序,在一个文件夹中,找到所有带指定前缀的文件,诸如 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')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值