python中os.listdir()和os.walk()的使用
1. os.listdir(path):只能返回当前path路径下的文件和文件夹,不包含子目录中的内容。
2. os.walk(top, topdown=True, onerror=None, followlinks=False)
参数:
- top 是你所要遍历的目录的地址
- topdown 为真,则优先遍历top目录,否则优先遍历top的子目录 (默认为True)
- onerror 需要一个 callable 对象,当walk需要异常时,会调用
- followlinks 如果为真,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录 (默认为False)
os.walk 的返回值是一个生成器(generator),也就是说我们需要不断的遍历它,来获得所有的内容。
每次遍历的对象都是返回的是一个三元组(root,dirs,files)
- root 所指的是当前正在遍历的这个文件夹的本身的地址
- dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
- files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
如果topdown 参数为真,walk 会遍历top文件夹,与top文件夹中每一个子目录
练习:编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出路径。
import os import re def all_path(dirname, file_name): for maindir, subdir, file_name_list in os.walk(dirname): for f in file_name_list: apath = os.path.join(maindir, f) if re.search(file_name, f): print(apath) if __name__ == '__main__': path_name = input("请输入要查询的目录:") # 不用区分大小写 file_name = input("请输入要查询的文件名称(可模糊查询):") all_path(path_name, file_name)
作者:David-lcw
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。