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