好记性不如烂笔头,python在我认为是替代shell的绝好语言。时常需要操作目录下的文件,方法多样,记录于此:
import os
from os.path import join, getsize
for root, dirs, files in os.walk('python/Lib/email'):
print root, "consumes",
print sum([getsize(join(root, name)) for name in files]),
print "bytes in", len(files), "non-directory files"
if 'CVS' in dirs:
dirs.remove('CVS') # don't visit CVS directories
不包括.和..以及.打头的隐藏文件。一直会递归到子目录下。返回是一个三元组:dirpath, dirnames, filenames,其中dirpath是路径,为字符串,dirnames是该路径下的所有目录名,为list,filenames为该路径下的所有文件名,为list。os.walk会递归子目录,直到dirnames为空,即[]。
root = '/home/lab'
for i in os.listdir(root):
if os.path.isfile(os.path.join(root,i)):
print i
结果不包括.和..以及.打头的隐藏文件。不会递归子目录。返回的只是文件名。
import glob
glob.glob('lab/*.py')
支持*和?两个通配符,返回的不只是文件名。默认*不匹配.打头的隐藏文件,如果使用.*就会匹配隐藏文件了。