《Python编程快速上手》第9.8.3实践练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Python编程快速上手》第9.8.3实践练习相关的知识,希望对你有一定的参考价值。

#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")    

以上是关于《Python编程快速上手》第9.8.3实践练习的主要内容,如果未能解决你的问题,请参考以下文章

《Python编程快速上手》第8.9.2实践练习

《Python编程快速上手》第7.18.2实践练习

《Python编程快速上手》第7.18.1实践练习

《Python编程快速上手》第8.9.3实践练习

《Python编程快速上手》第9.8.1实践练习

python编程快速上手之第9章实践项目