1.使用os.listdir(dir)得到一定list包含了目录下所有的文件和文件夹
os.path.join(dir,filename)获得文件的全路径
os.path.isdir(filepath)判断是不是一个dir
import os,sys import re def deal_log(log_name,dict): f=open(log_name) lines=f.readline() while lines: a=lines.split(" ") if a[0] in dict: dict[a[0]]+=1 else: dict[a[0]]=1 lines=f.readline() f.close() return dict def listdir(dir): dict={} regex = re.compile(r'\w*access_log\w*') #print dir list = os.listdir(dir) for line in list: filepath = os.path.join(dir,line) if os.path.isdir(filepath): print line for li in os.listdir(filepath): print "\t"+os.path.join(filepath,li) m=re.search(regex,os.path.join(filepath,li)) if m: print os.path.join(filepath,li) deal_log(os.path.join(filepath,li),dict) elif os.path: print "\t"+filepath m=re.search(regex,filepath) if m: print filepath deal_log(filepath,dict) print dict #dir = raw_input('please input the path:') listdir("/var/log")
2.使用os.walk
import os def walk_dir(dir,topdown=True): print os.walk(dir, topdown) for root, dirs, files in os.walk(dir, topdown): #print "#"*100 #print files #print "#"*100 #print dirs #print "*"*100 for name in files: print(os.path.join(root,name)) for name in dirs: print(os.path.join(root,name)) dir = raw_input('please input the path:') walk_dir(dir) fileinfo = open('list.txt','w')
os.walk 方便很多了.这个方法返回的是一个三元tupple(dirpath, dirnames, filenames),
第一个为起始路径,
第二个为起始路径下的文件夹,
第三个是起始路径下的文件.
dirpath是一个string,代表目录的路径,
dirnames是一个list,包含了dirpath下所有子目录的名字,
filenames是一个list,包含了非目录文件的名字.这些名字不包含路径信息,如果需要得到全路径,需要使用 os.path.join(dirpath, name).