跳转至

Python练习:目录和文件操作

点击这里下载一个zip包,解压后,得到一个目录source。

题目1

请写一个程序,在当前工作目录下,创建 如下的目录层级结构

backup/new/

然后把整个下载的source目录 内容,拷贝到 backup/new/source 目录里面去。

题目2

请写一个程序,计算出 下载的source目录里面(不包含子目录)所有的文件的大小之和

题目3

请写一个程序,删除掉 下载的source目录里面(不包含子目录)所有的扩展名为bmp的文件

题目4

请写一个程序,找出下载的source目录里面(不包含子目录)所有扩展名为.avi的文件,扩展名改为.dll

题目5

请写一个程序,找出下载的source目录里面(包含子目录)所有扩展名为.avi的文件,扩展名改为.dll


补充练习

VIP实战班学员请联系老师获取补充练习,并做阶段学习交流

您需要高效学习,找工作? 点击咨询 报名实战班

点击查看学员就业情况

题目1-答案

from shutil import copytree
import os

os.makedirs('backup/new')

copytree('source', 'backup/new/source')

题目2-答案

import os
from os.path import isfile, join

# 目标目录
targetDir = 'source'

totalsize = 0
for f in os.listdir(targetDir):
    filePath = join(targetDir, f)
    if isfile(filePath):
        totalsize += os.path.getsize(filePath)

print(f'合计大小为 {totalsize} 字节')

题目3-答案

import os
from os.path import isfile, join

targetDir = 'source'

for f in os.listdir(targetDir):
    filePath = join(targetDir, f)
    if isfile(filePath) and filePath.endswith('.bmp'):
        print(f'删除文件{filePath}')
        os.remove(filePath)

题目4-答案

import os
from os.path import isfile, join

targetDir = 'source'

for f in os.listdir(targetDir):
    filePath = join(targetDir, f)
    if isfile(filePath) and filePath.endswith('.avi'):
        newname = filePath[:-3] + 'dll'
        os.rename(filePath,newname)

题目5-答案

import os
from os.path import join

# 目标目录
targetDir = r'source'

# 下面的三个变量 dirpath, dirnames, filenames
# dirpath 代表当前遍历到的目录名
# dirnames 是列表对象,存放当前dirpath中的所有子目录名
# filenames 是列表对象,存放当前dirpath中的所有文件名

for (dirpath, dirnames, filenames) in os.walk(targetDir):
    for fn in filenames:
        filePath = join(dirpath, fn)
        if filePath.endswith('.avi'):
            newname = filePath[:-3] + 'dll'
            os.rename(filePath,newname)