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

9.1选择性拷贝

编写一个程序,遍历一个目录树,查找特点扩展名的文件(诸如.pdf或.jpg)。不论这些文件的位置在哪里,将它拷贝到一个新的文件夹中。

import os,shutil
for foldername,subfolders,filenames in os.walk('D:\\python\\automate_online-materials'):
    for filename in filenames:
        if filename.endswith('.pdf') or filename.endswith('.png'):
            print(os.path.join(foldername,filename))
            shutil.copy(os.path.join(foldername,filename),'D:\\test9.1')
        else:
            continue

9.2删除不需要的文件

编写一个程序,遍历一个目录树,查找特别大的文件或文件夹,比方说,超过100MB的文件,将这些文件的绝对路径打印到屏幕上

import os,shutil
for foldername,subfolders,filenames in os.walk('D:\\python\\automate_online-materials'):
    for filename in filenames:
        if os.path.getsize(os.path.join(foldername,filename))>=500000:
            print(os.path.join(foldername,filename))
            print(os.path.getsize(os.path.join(foldername,filename)))

9.3消除缺失的编号

编写一个程序,在一个文件夹中,找到所有带制定前缀的文件,诸如spam001.txt,spam002.txt等,并定位缺失的编号(例如存在spam001.txt和spam003.txt,但不存在spam002.txt)。让该程序对所有后面的文件改名,消除缺失的编号。

import os,re,shutil
num = 1
for foldername,subfolders,filenames in os.walk('D:\\test9.2'):
    for filename in filenames:
        mo = re.compile(r'spam\d{3}.*(\.\w*)$').search(filename)
        if mo == None:
            continue
        else:
            if num < 10:
                temp = 'spam00'+str(num)+mo.group(1)
            if num>=10 and num<100:
                temp = 'spam0'+str(num)+mo.group(1)
            if num>=100:
                temp = 'spam'+str(num)+mo.group(1)
            print(temp)
            shutil.move(os.path.join(foldername,filename),os.path.join(foldername,temp))
            num=num+1

猜你喜欢

转载自blog.csdn.net/u014221647/article/details/81017419
今日推荐