一个可以递归的计算一个路径下文件总行数的程序。
代码如下:
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')
另外程序中操作的目录及含有的文件如下:
其他文件夹都是空的
程序的输出如下: