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

测试环境是 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这个元组中 遍历这个元组中的所有文件夹,一旦遇到子文件夹,则把这个子文件夹继续加入到元组中.

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


代码不是很简洁,希望各位能指点指点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值