Python文件(二) [os, os.path模块]

OS模块下我们不需要关心什么操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用

同样,用几道小题来练练手。
1.编写一个程序,统计当前目录下每个文件类型的文件数

import os


all_files = os.listdir(os.curdir) #os.curdir指代当前目录('.') listdir列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)
type_dict = dict()

for each in all_files:
    if os.path.isdir(each): # 判断指定路径是否存在且是一个目录
        type_dict.setdefault('文件夹', 0) #如果键不存在于字典中,将会添加键并将值设置为默认值
        type_dict['文件夹'] += 1
    else:
        ex = os.path.splitext(each)[1] #分离文件名与扩展名 [0]文件名,[1]扩展名
        type_dict.setdefault(ex, 0)
        type_dict[ex] += 1

for each in type_dict.keys():
    print('该文件夹下共有类型为[%s]的文件%d个。' %(each, type_dict[each]))

2.编写一个程序,计算当前文件夹下所有文件的大小

import os

all_files = os.listdir(os.curdir)
file_dict = dict()

for each in all_files:
    if os.path.isfile(each): #判断指定路径是否存在且是一个文件
        file_size = os.path.getsize(each)
        file_dict[each] = file_size

for each in file_dict.items():
    print('%s [%dBytes]' %(each[0], each[1]))

3.编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在。如遇到文件夹,则进入文件夹继续搜索

import os

def search_file(start_dir, road):
    os.chdir(start_dir) # 改变工作目录
    all_files = os.listdir(os.curdir)

    for each in all_files:
        if each == road:
            print(os.getcwd() + os.sep + each) # getcwd返回当前工作目录 sep输出操作系统特都不发的路径分隔符
        if os.path.isdir(each): #判断指定路径是否存在且是一个目录
            search_file(each, road)
            os.chdir(os.pardir) #递归调用后记得返回上一级目录

start_dir = input('请输入待查找的初始目录:')
road = input('请输入要查找的目标文件:')

search_file(start_dir, road)

4.编写一个程序,输入开始搜索的路径,查找该路径下(包含子文件夹内)所有的视频格式文件(mp4,rmvb,avi),并把创建一个文件(vediolist.txt)存放所有找到的文件的路径。

import os

def search_file(start_dir, road):
    os.chdir(start_dir) # 改变工作目录
    all_files = os.listdir(os.curdir)

    for each in all_files:
        ex = os.path.splitext(each)[1]
        if ex in road:
            vedio_list.append(os.getcwd() + each + os.linesep) #当前平台使用的行终止符
        if os.path.isdir(each):
            search_file(each, road)
            os.chdir(os.pardir)

start_dir = input('请输入待查找的初始目录:')


road = ['.mp4', '.avi', '.rmvb']
vedio_list = []

search_file(start_dir, road)

f = open(os.getcwd() + os.sep + 'vediolist.txt', 'w')
f.writelines(vedio_list)
f.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rocky0429

一块也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值