首页 > 编程 > Python > 正文

Python遍历目录

2019-11-08 01:26:40
字体:
来源:转载
供稿:网友

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目录及其子目录下的所有文件路径


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表