您的位置:首页 > 编程语言 > Python开发

python2.7.3 统计某个文件夹下所有文件或者某个文件的行数

2014-03-07 11:03 691 查看
测试环境是 ubuntu 12.03

#coding=UTF-8
import os ,datetime

print ""
# basedir = '/home/lewiskyo/文档/pythonExer/'

#手动输入主目录版本 使用的时候请注释掉上一行的basedir 不注释也可以
# PS:  输入的必须要是绝对路径 除非你查找的只是与这个文件同一目录下的文件
basedir = raw_input("Please input the main directionary or filename (input absolute path):\n")

if os.path.isfile(basedir):
lines = len(open(basedir,'rU').readlines())
print basedir+" : " + str(lines) +"\n"
os._exit(0)

if not os.path.isdir(basedir):
print basedir + " is not a directionary\n"
os._exit(0)

list = os.listdir(basedir)

totalLines = 0
filelist = {}
dirlist = [ basedir]

i = 0
#遍历所有文件夹
while  i < len(dirlist):
basedir = dirlist[i]
list = os.listdir(basedir)
#遍历当前文件夹下的所有文件以及文件夹
for j in range(0,len(list)):
path = os.path.join(basedir,list[j])
#若然是文件则把文件名及其行数加入到filelist这个字典中 最后输出
if os.path.isfile( path) and ( not path.endswith("~")):
#读取该文件的行数 包含空行 直到读到EOF
lines = len(open(path,'rU').readlines())
filelist[path] = lines
totalLines +=  lines
#否则加入到dirlist这个字典中 注意这里不能直接用else 因为上一个判断是排除了以 "~" 结尾的文件
elif os.path.isdir(path):
dirlist.append(path)
i = i+1

#输出文件名以及行数
print ""
for key in filelist:
print '%s : %s' % (key,filelist[key])

print 'TotalLines: ' + str(totalLines) +"\n"


原理就是在遍历一个文件夹过程中, 把文件和行数加入到filelist这个字典中,同时用totallines记录总行数.

把文件夹加入到dirlist这个元组中 遍历这个元组中的所有文件夹,一旦遇到子文件夹,则把这个子文件夹继续加入到元组中.

所以这个元组实质上就是一个队列. 用递归的方法也可以做到.

代码不是很简洁,希望各位能指点指点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python
相关文章推荐