现在的位置: 首页 > 综合 > 正文

求助:递归地读取一个路径下文件总行数遇到的问题。

2013年11月25日 ⁄ 综合 ⁄ 共 1138字 ⁄ 字号 评论关闭

一个可以递归的计算一个路径下文件总行数的程序。

代码如下:

def count_file_line(filename):
	count=0
	try:
		with open(filename) as file:
			for each_line in file:
				count=count+1
		print("目标文件"+filename+"的行数:"+str(count))
		return(count)
	except IOError as err:
		print("IOError:"+str(err))
		return(None)
'''
比较!有问题的方法
'''
def handle_files(total_line_num=0,path=None):
	files=os.listdir(path)
	for each_file in files:
		file_path=path+'/'+each_file
		print("处理文件:"+file_path)
		#为什么递归之后total_line_num又变回递归前的值了?
		if os.path.isfile(file_path):
			print("处理前当前总行数:"+str(total_line_num))
			total_line_num+=count_file_line(file_path)
			print("处理后当前总行数:"+str(total_line_num))
		else:			
			handle_files(total_line_num,file_path)
	return total_line_num	

'''可以正常工作的方法
def handle_files(path=None):
	global total_line_num
	files=os.listdir(path)
	for each_file in files:
		file_path=path+'/'+each_file
		print("处理文件:"+file_path)
		if os.path.isfile(file_path):
			print("处理前当前总行数:"+str(total_line_num))
			total_line_num+=count_file_line(file_path)
			print("处理后当前总行数:"+str(total_line_num))
		else:			
			handle_files(file_path)
	return total_line_num	
'''
import os
path='f:/count'
total_line_num=0
total_line_num=handle_files(path=path)
print(total_line_num)
input('press any to exit')

另外程序中操作的目录及含有的文件如下:

  

其他文件夹都是空的

程序的输出如下:

抱歉!评论已关闭.