|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
以下是35讲最后一题的一个简化版的答案。
我想在文件夹中递归找出所有'.py'的文件,计算总共的文件数和代码行数
import easygui as g
import os
def count_code(dir1):
os.chdir(dir1)
files = os.listdir(os.curdir)
global count_files
global count_lines
for eachfile in files:
if os.path.isfile(eachfile) and os.path.splitext(eachfile)[1] == '.py':
f = open(eachfile,'r')
count_files +=1
for eachlines in f:
count_lines += 1
f.close()
elif os.path.isdir(eachfile):
count_code(eachfile)
os.chdir(os.pardir)
return count_files,count_lines
count_files = 0
count_lines = 0
dir1 = g.diropenbox(msg = '请选择您的代码库:')
print(count_code(dir1))
这是我的代码。 现在的问题是, count_files放在全局域代码是有效的。
但是介于小甲鱼在视频中说,建议大家将全局域和内部域的参数分开。
所以我应该怎么改?
直接在内部域定义count_files 和 count_lines 每次递归的时候, 他们都会被重置呀!
直接定义成参数:
- import os
- import easygui as g
- def count_code(dir1, count_files, count_lines):
- os.chdir(dir1)
- files = os.listdir(os.curdir)
- for eachfile in files:
- if os.path.isfile(eachfile) and os.path.splitext(eachfile)[1] == '.py':
- f = open(eachfile,'r')
- count_files +=1
- for eachlines in f:
- count_lines += 1
- f.close()
- elif os.path.isdir(eachfile):
- count_files, count_lines = count_code(eachfile, count_files, count_lines)
- os.chdir(os.pardir)
- return count_files,count_lines
- dir1 = g.diropenbox(msg = '请选择您的代码库:')
- print(count_code(dir1, 0, 0))
复制代码
|
|