【Python3_进阶系列_013】Python3-实现文件夹文件的过滤

1.实现一个函数,可以输出指定目录下的指定后缀的文件,也可以排除指定后缀的文件

os.listdir可以列出指定目录下的全部文件名,子文件夹名。但是无法循环列出子文件夹下的子文件夹和文件名。因此函数需要递归的去对目录进行输出文件名并根据给定的后缀进行输出或者不输出。

import os
def get_files(path, include=['.py'], exclude=['.idea', '.xml', '.pyc', '.txt']):
    tmp = []
    files = os.listdir(path) ##列出所有的文件名和子目录名称
    for file in files:
        new_path = "/".join([path, file]) ##必须按照完整的路径进行操作,因为files的存储的是名称,不包含路径,因此需要和path进行拼接成实际路径
        if os.path.isdir(new_path):  ## 如果是目录,进行递归调用
            tmp.extend(get_files(new_path))
        elif os.path.isfile(new_path): ##如果是文件,如果文件名包含排除的后缀,此时不做任何操作,如果是文件名包含指定的后缀,就将完整的路径输出
            for exc in exclude:
                if new_path.find(exc) != -1:##不存在的时候 find 返回-1.否则返回index
                    break
            else:
                for inc in include:
                    if new_path.find(inc) != -1: ##不存在的时候 find 返回-1.否则返回index
                        tmp.append(new_path)
                tmp.append(new_path)
    return list(set(tmp))


path = "D:/Python36/pycharm/projects/PersonalSeleniumLearning/"
get_files(path)
print(get_files(path))

输出:输出的是完整的路径

['D:/Python36/pycharm/projects/PersonalSeleniumLearning//13.database.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//3.1formatstring.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//19.log.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.cookie.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.Select_test.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.webelement_test.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//8.exceptions.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.video.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//for.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//SmokeTestReport.html', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//screen.jpg', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//homepagetests.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//allvms.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//testsuites.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//public.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.webdriver_pro.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//test.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//20160321.151538.279814.jpg', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.Group_Elements.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//test.db', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//udp-client.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//chrome.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//test.profile', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.debug.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//HTMLTestRunner.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//11.file.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//5.4.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//HTMLResult.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//14.network.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//7.classoperations.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//searchtests.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.screenshot.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//chromedriver.exe', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//12.GUI.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//18.package.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//setup.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//mouse_actions.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.Alert.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//16.分析.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//hello.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//9.magic.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//udp-server.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.download.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//searchproducts.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//6fibs.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//14-urllib.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//3.find_elements.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//5.mail126_mode.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//16.unittest.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//sina.html', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//1.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//mylog.log', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//10.modle.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//15.www.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//4.Page_Wait.py', 'D:/Python36/pycharm/projects/PersonalSeleniumLearning//5.mailtest.py']

 

这个函数在有些场景下有特殊用处,因此需要了解如何实现

转载于:https://www.cnblogs.com/forfreewill/articles/9408181.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值