一定会经常碰到这样的需求,对一个目录下面对所有文件进行某种同样的操作,比如重命名,但是一个目录下面会包含有目录,因此我们避免不了递归操作。但是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))
网友评论