|
|
发表于 2019-9-11 00:07:09
|
显示全部楼层
本帖最后由 jackz007 于 2019-9-11 00:08 编辑
你使用了相对路径,所以,在 search_file() 函数入口,需要 os . chdir() 到目标目录,而在函数出口,则必须通过 os . chdir() 恢复原始路径,你的代码缺少了函数入口的 os . chdir(),除此以外,你的代码还有相当多的问题,我已经一一加以改正,并把相对路径改成了绝对路径,不再使用 os . chdir() 函数改变当前目录。
- import easygui as g
- import os
- def search_file(file_path):
- count = 0
- for each_path in os . listdir(file_path):
- path = os . path . join(file_path , each_path)
- if os . path . isdir(path):
- count += search_file(path)
- elif os . path . isfile(path):
- ext = os . path . splitext(each_path)[1]
- if ext in ['.py', '.c', '.cpp', '.pas', '.asm']:
- count += line_count(path)
- dict_1 . setdefault(ext , 0)
- dict_1[ext] += 1
- return count
- def line_count(each_path):
- count = 0
- with open(each_path) as f:
- for each_line in f:
- count += 1
- return count
- dict_1 = dict()
- file_path = g.diropenbox()
- count = search_file(file_path)
- if count > 10000:
- msg = '您目前共累计编写了 %d 行代码,按 10000 行的目标衡量,您已经超额完成了 %.2f%%\n,超出了 %d 行,您辛苦了!' % (count , count / 100 , count - 10000)
- else:
- msg = '您目前共累计编写了 %d 行代码,按 10000 行的目标衡量,完成进度:%.2f%%\n,离 10000 行还差 %d 行,请继续努力!' % (count , count / 100 , 10000 - count)
- keys = list(dict_1 . keys())
- keys . sort()
- text = ''
- for each in keys:
- text += '【%s】源文件,共 %d 个文件\n' % (each , dict_1[each])
- g.textbox(msg , '统计结果' , text)
复制代码 |
|