python中的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 = []

    遍历完毕,退出循环

3.简单的例子

保持目录 a 的目录结构,在 b 中创建对应的文件夹,并把a中所有的文件加上后缀 _bak

import os

Root = ‘a‘
Dest = ‘b‘

for (root, dirs, files) in os.walk(Root):
    new_root = root.replace(Root, Dest, 1)
    if not os.path.exists(new_root):
        os.mkdir(new_root)

    for d in dirs:
        d = os.path.join(new_root, d)
        if not os.path.exists(d):
            os.mkdir(d)

    for f in files:
        # 把文件名分解为 文件名.扩展名
        # 在这里可以添加一个 filter,过滤掉不想复制的文件类型,或者文件名
        (shotname, extension) = os.path.splitext(f)
        # 原文件的路径
        old_path = os.path.join(root, f)
        new_name = shotname + ‘_bak‘ + extension
        # 新文件的路径
        new_path = os.path.join(new_root, new_name)
        try:
            # 复制文件
            open(new_path, ‘wb‘).write(open(old_path, ‘rb‘).read())
        except IOError as e:
            print(e)

原文地址:https://www.cnblogs.com/VseYoung/p/walk.html

时间: 2024-08-02 21:28:32

python中的os.walk的相关文章

python中的os.walk的用法

os.walk 的返回值是一个生成器(generator),也就是说我们需要不断的遍历它,来获得所有的内容. 每次遍历的对象都是返回的是一个三元组(root,dirs,files) root 所指的是当前正在遍历的这个文件夹的本身的地址 dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录) files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录) 如果topdown 参数为真,walk 会遍历top文件夹,与top文件夹中每一个子目录. 作者:Mik

python中的 os.mkdir和os.mkdirs

创建目录 在Python中可以使用os.mkdir()函数创建目录(创建一级目录). 其原型如下所示: os.mkdir(path) 其参数path 为要创建目录的路径. 例如要在D盘下创建hello的目录 >>> import os >>> os.mkdir('d:\hello') 可以使用os.makedirs()函数创建多级目录. 其原型如下所示: os.makedirs(path) 其参数path 为要创建目录的路径. 如在D盘下创建books的目录,books

python 中的os模块

Python os 模块提供了一个统一的操作系统接口函数 一.对于系统的操作 1.os.name 当前使用平台 其中 'nt' 是 windows,'posix' 是linux 或者 unix 2.os.sep 输出操作系统的特定的路径分隔符.Win下为"\",Linux下为"/" 3.os.pathsep 输出分格符 输出用于分割文件路径的字符串. Windows下是':',Linux下为":" 4.os.linesep 换行符 输出当前平台是

Python入门之os.walk()方法

os.walk方法,主要用来遍历一个目录内各个子目录和子文件. os.walk(top, topdown=True, onerror=None, followlinks=False) 可以得到一个三元tupple(dirpath, dirnames, filenames), 第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件. dirpath 是一个string,代表目录的路径, dirnames 是一个list,包含了dirpath下所有子目录的名字. filenames 

【转】python中的os模块

在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块,所以今天整理下比较常用的几个方法.网上这方面资料也很多,每次整理,只是对自己所学的知识进行梳理,从而加深对某个模块的使用. 1.当前路径及路径下的文件 os.getcwd():查看当前所在路径. os.listdir(path):列举目录下的所有文件.返回的是列表类型 import os dir = os.getcwd(

Python中的os模块常用函数

本文的参考文献为------<简明Python教程> os是python的一个重要的模块,使用前需要:import os 常用的函数如下: (1)os.name,返回正在使用的平台. (2)os.getcwd(),返回当前工作目录. (3)os.path.exists(),检验给出的路径是否真正地存在. (4)os.path.isfile(),检验给出的路径是否为一个文件. (5)os.path.isdir(),检验给出的路径是否为一个目录. (6)os.path.split(),返回一个路径

Python中的OS模块。

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径: import os print(os.getcwd()) os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.chdir('E:\Python学习') # 这里输入你要进入的文件夹路径 print(os.getcwd()) # 打印验证即可 os.curdir 返回当前目录: ('.') os.curdir print(os.getcwd()) os.pardir

python中的os.path.dirname(__file__)的使用

os.path.dirname(__file__)返回脚本的路径,但是需要注意一下几点: 1.必须是实际存在的.py文件,如果在命令行执行,则会引发异常NameError: name '__file__' is not defined 2.在运行的时候如果输入完整的执行的路径,则返回.py文件的全路径如: python c:/test/test.py 则返回路径 c:/test ,如果是python test.py 则返回空 3.结合os.path.abspath用,效果会好,如果大家看过一些p

python中os路径相关的函数 os.mkdir和os.makedirs

传送门:http://blog.csdn.net/shennongzhaizhu/article/details/51455063 在Python中可以使用os.mkdir()函数创建目录(创建一级目录). os.mkdir(path) 例如要在D盘下创建hello的目录 >>> import os >>> os.mkdir('d:\hello') 其原型如下所示: 其参数path 为要创建目录的路径(创建多级目录) >>> import os >