【python小作业】编写程序,用户输入一个文件夹名和一个文件名,搜索该文件夹及其所有子文件夹中是否存在该文件,如果存在就输出“是”,如果不存在就输出“否”。

题目

编写程序,用户输入一个文件夹名和一个文件名,搜索该文件夹及其所有子文件夹 中是否存在该文件,如果存在就输出“是”,如果不存在就输出“否”。

题解

  1. 使用oslistdir()可以返回指定目录下的文件名称和文件夹名称。
  2. listdir()返回列表,可以通过__contains__()查找文件名称是否在该目录下。
  3. 通过filter过滤过滤文件,保留文件夹名称,在通过map使其带上路径,通过os.path.isdir()判断该文件夹名称是否是文件夹(可能存在文件没有后缀名),如果是,则再次查找,直至在该文件夹及其所有子文件夹中找到为止。
  4. 文件夹有时可能拒绝访问,所以使用try语句避免报错。

代码

import os
#查找当前文件夹
def search_currentfolder(folder, filename):
    try:
        files = os.listdir(folder)
    except:
        print(folder,": folder accessDenied")
        return None

    if files.__contains__(filename):
        return os.path.join(folder, filename)
    else:
        return None

#查找全当前文件夹及其子文件夹
def search_allfolder(folder, filename):
    filepath = search_currentfolder(folder,filename)
    if filepath:
        return filepath
    else:
        try:
            files = os.listdir(folder)
        except:
            return None
        folders = list(map(lambda name:folder+"\\"+name, filter(lambda path: not path.__contains__("."), files)))
        if not folders:
            return None
        for folderpath in folders:
            if os.path.isdir(folderpath):
                filepath = search_allfolder(folderpath, filename)
                if filepath:
                    return filepath
    return None

#通过search调用上面两个函数
def search(folder,filename,model="current"):
    if model=="all":
        filepath = search_allfolder(folder,filename)
    else:
        filepath = search_currentfolder(folder, filename)
    if filepath:
        print("是")
        print(filepath)
    else:
        print("否")

folder = input("folder path:")
filename = input("file path:")
search(folder,filename,model = "all")

截图

在这里插入图片描述

  • 11
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值