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))

你可能感兴趣的:(os.walk函数:优雅得在目录里行走)