Python遍历目录

来源:互联网 发布:淘宝大拉翅怎么戴 编辑:程序博客网 时间:2024/05/02 03:07

1.遍历指定目录及其子目录下所有文件

import osfor dirpath,dirnames,filenames in os.walk("/tmp"):    for i in filenames:        print os.path.join(dirpath,i)

详细说明:
os.walk()返回一个三元组,(dirpath, dirnames, filenames)
dirpath是目录的路径,数据结构为一个字符串,
dirnames是该目录下的所有子目录的名字,数据结构为一个list,
filenames是该目录下所有非目录的文件名,数据结构为一个list
举例来说:以我电脑的/tmp目录为例
/tmp目录下的结构为:蓝色为目录


第一次调用os.walk()时,
dirpath="/tmp",
dirnames=['.vbox-lgamtj-ipc', 'Atom Crashes', 'com.apple.launchd.0zjyDJjNLe', 'com.apple.launchd.GwUhv9LSBx', 'com.apple.launchd.P2SYfyPWP4']
filenames=['.keystone_install_lock', 'UserName']
对于filenames中的每一个元素,调用os.path.join(dirpath,i)就得到/tmp目录下所有文件的路径
对于dirnames中的每一个元素,调用os.path.join(dirpath,j)就得到/tmp目录下所有子目录的路径
然后对于dirnames中的每一个元素,又都会调用os.walk(),以.vbox-lgamtj-ipc为例,.vbox-lgamtj-ipc目录结构为:


此时,dirpath="/tmp/.vbox-lgamtj-ipc"
dirnames=[]
filenames=['ipcd', 'lock']
对于filenames中的每一个元素,调用os.path.join(dirpath,i)就又得到/tmp/.vbox-lgamtj-ipc下所有文件的路径
此时,如果.vbox-lgamtj-ipc下还有子目录,则又会先遍历完其所有子目录,才会返回到上一级/tmp目录下的子目录去遍历,即是一个递归操作
最后依次对遍历/tmp目录得到的dirnames执行os.walk(),就可得到/tmp目录及其子目录下的所有文件路径

0 0