Os.walk用法小结

  1. 定义:

假设你希望对某个文件夹中的所有文件改名,包括文件夹中所有子文件夹中的所有文件。也就说你需要遍历目录树,处理每个文件。Python正好提供了这样的函数

  1. 用法

代码如下:

import os

for folder, subfolders,filenamesin os.walk(r'C:\Users\eilmoro\Desktop\test'):

    print('The folder is%s'%folder)

    for foldername insubfolders:

        print('The subfoldersis %s'%foldername)

    for file in filenames:

        print('The files is%s'%file)

输出结果:

The folder is C:\Users\eilmoro\Desktop\test

The subfolders is st01

The files is stx01.txt

The files is stx02.txt

The folder is C:\Users\eilmoro\Desktop\test\st01

The subfolders is sst01

The files is sstx01.txt

The files is sstx02.txt

The folder is C:\Users\eilmoro\Desktop\test\st01\sst01

The files is ssstx01.txt

The files is ssstx02.txt


  1. 注意点
    1. 第一个for循环是遍历这个test文件夹及它下面的每一个子文件夹,文件及子文件夹下的子文件夹和文件直到目录的最后一层
    2. 第一个for后面的三个变量名不用固定形式,取有意义的三个变量名就可以,如:mainfolder, folders, files也是可以的,不影响程序的运行
    3. 输出的结果:除了第一个变量是完整的绝对路径,第二个只是子文件夹名的列表,第三个只是文件名的列表
    4. 传入walk后的路径要注意转义字符的问题,若传入的路径是'C:\Users\eilmoro\Desktop\test'没有r,程序运行是会报错:
      1.  Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun错误解决方案
      2.  可以写成如下几种形式:
        1. 'C:/Users/eilmoro/Desktop/test'
        2. r'C:\Users\eilmoro\Desktop\test'
        3. 'C:\\Users\\eilmoro\\Desktop\\test'

我强烈推荐1写法,这在Linux和window下都是行的通的

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值