os.walk函数:优雅得在目录里行走

一定会经常碰到这样的需求,对一个目录下面对所有文件进行某种同样的操作,比如重命名,但是一个目录下面会包含有目录,因此我们避免不了递归操作。但是Python的os.walk()函数,可以避免递归操作,简单得实现在目录中“行走”的功能。
下面os.walk实现统计一个文件夹的大小:

import os

totalSize = 0
for folderName, subfolders, filenames in os.walk('/home/rhythm'):
    #  print('The current folder is ' + folderName)

    #  for subfolder in subfolders:
        #  print('SUBFOLDER OF ' + folderName + ": " + subfolder)

    for filename in filenames:
        #  print('FILE INSIDE' + folderName + ": " + filename)
        try:
            totalSize += os.path.getsize(os.path.join(folderName,filename) )
        except OSError: 
            continue

    
print(totalSize)

再比如有一个pictures文件夹,我们需要从里面找出所有的以jpg结尾的壁纸文件,并把这些文件转移到一个叫result的目录里去:

import os
import shutil

des = 'result'
if not os.path.exists(des):
   os.makedirs(des)

total = 0
for folderName, subfolders, filenames in os.walk('pictures'):
    for filename in filenames:
        if(filename.endswith('.jpg')):
            pathName = os.path.join(folderName, filename)
            shutil.copy(pathName, des)
            total += 1; 

print("Done! Copy {0} pictrues".format(total))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 19,122评论 17 410
  • os模块 os模块的作用: os,语义为操作系统,所以肯定就是操作系统相关的功能了,可以处理文件和目录这些我们日常...
    Irlans阅读 642评论 0 2
  • 班级里睿睿小朋友,个头较小,动作发展较慢,不管是进餐或者游戏等,手脚都不够灵活流利,总是处在最后面才完成,加上...
    min88阅读 777评论 0 2
  • 2016.1.29锦宏大酒店:肖羽祥先生&杨娅小姐 幸福婚典流程 (主持人:梁博 18873868725) 主持人...
    主持人梁博阅读 619评论 0 0
  • 因为房子租期到了,而我刚好想要换地方住,所以就另外租了一个房子,搬家这天,刚好公司里遇到一些事情,忙了整整一天,所...
    心有余响阅读 356评论 2 8