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']
这个函数在有些场景下有特殊用处,因此需要了解如何实现