zoukankan      html  css  js  c++  java
  • os.walk详解

    https://www.jianshu.com/p/bbad16822eab

    python中os.walk是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。

    1.载入
    要使用os.walk,首先要载入该函数

    可以使用以下两种方法

    • import os
    • from os import walk

    2.使用

    os.walk的函数声明为:

    walk(top, topdown=True, onerror=None, followlinks=False)

    参数

    • top 是你所要便利的目录的地址
    • topdown 为真,则优先遍历top目录,否则优先遍历top的子目录(默认为开启)
    • onerror 需要一个 callable 对象,当walk需要异常时,会调用
    • followlinks 如果为真,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)

    os.walk 的返回值是一个生成器(generator),也就是说我们需要不断的遍历它,来获得所有的内容。

    每次遍历的对象都是返回的是一个三元组(root,dirs,files)

    • root 所指的是当前正在遍历的这个文件夹的本身的地址
    • dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
    • files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

    如果topdown 参数为真,walk 会遍历top文件夹,与top文件夹中每一个子目录。

    举个例子

    如果我们有如下的文件结构:

          a ->   b   ->   1.txt,  2.txt
                 c   ->   3.txt
                 d   ->   
               4.txt
               5.txt
    
    for (root, dirs, files) in os.walk('a'):
        #第一次运行时,当前遍历目录为 a
        所以 root == 'a'
             dirs == [ 'b', 'c', 'd']
             files == [ '4.txt', '5.txt']
        
        。。。
    
        # 接着遍历 dirs 中的每一个目录
        b:  root  = 'a\b'
            dirs  = []
            files = [ '1.txt', '2.txt']
        
        # dirs为空,返回
        # 遍历c
        c:  root  = 'a\c'
            dirs  = []
            files = [ '3.txt' ]
        
        PS : 如果想获取文件的全路径,只需要 
        for f in files:
            path = os.path.join(root,f)
        
        # 遍历d
        d:  root  = 'a\b'
            dirs  = []
            files = []
    
        遍历完毕,退出循环



    作者:MikuLovely
    链接:https://www.jianshu.com/p/bbad16822eab
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    如何在Ubuntu Server 18.04上安装Microsoft的Procmon
    如何在Ubuntu 20.04上安装Wine 5.0
    如何在Kali Linux 2020中启用SSH服务
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Apache Groovy
    如何使用命令在Ubuntu 20.04 Linux上安装Vmware Tools
    在Ubuntu 20.04 LTS Focal Fossa上安装Zabbix Agent
    hdu 2089 不要62
    hdu 2093 成绩排名
    hdu 2104 hide handkerchief
    leetcode147对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/BlueFire-py/p/8524963.html
Copyright © 2011-2022 走看看