项目相关要求
wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。
- 基本功能列表
- -c [文件名] 返回文件的字符数
- -l [文件名] 返回文件的行数
- -w [文件名] 返回文件词的数目
- -a [文件名] 返回文件的字符数,行数,词数
解题思路
看到这个题目感觉,看起来似乎不难,但是我已经很久没有写过代码,所以很多东西都是重新学起,于是选择了之前学过的Python语言。在功能的实现上,我只选择的最基础的功能,我有花费了挺多时间重新温习Python,百度了挺多资料的,还去了廖雪峰网站学习。
设计实现过程
设计思路:
通过main()函数为出发点,然后使用command()函数获取操作数与操作符,command()函数再分别调用strcount(),wordcount(),linecount(),函数来完成统计字数在main()函数中调用command()函数来完成需求。最后感觉一个一个调用有点麻烦,就弄了个-a一次完成干脆一点。
代码说明
3个基本功能函数
# 统计字符
def strcount(name):
f = open(name)
n = 0
for line in f.readlines():
n += len(line)
return n
# 统计行数
def linecount(name):
f = open(name)
n = 0
for line in f.readlines():
n = n + 1
return n
# 统计词数
def wordscount(name):
f = open(name, "r")
n = 0
for line in f.readlines():
listmatch = re.findall('[a-zA-Z]+', line.lower())
n += len(listmatch)
return n
然后是统筹功能的函数
# 统筹功能函数
def command(str1, name):
f = open(name, "r")
word = wordscount(name)
chars = strcount(name)
lines = linecount(name)
if str1 == '-c':
print('字符数', chars)
elif str1 == '-w':
print('单词数', word)
elif str1 == '-l':
print('行数', lines)
elif str1 == '-a': # 读取全部信息
print('字符数', chars)
print('单词数', word)
print('行数', lines)
最后就是主函数
if __name__ == '__main__':
print('请输入命令符和文件路径,以空格分开:')
str1, name = input().split()
print(str1, name)
command(str1, name)
测试运行
首先是空文件
然后是一个字母a
然后是一个单词加感叹号 hello!
最后是我自己的代码
测试完毕,完成需求
PSP开发耗时
代码覆盖率
项目总结
其实一开始的话我是用的最简单的想法,然后查阅了资料发现其实很多前辈都很厉害,所以要多学习大神们的代码,自己搞只能是闭门造车,还是大家共同交流进步快啊,我也和舍友讨论的正则表达式的问题,每个人的想法都不一样。还有就是这次的项目把,我还是没有很熟练的使用Python,对挺多概念还有点模糊。总体来说,还是要多多努力,才能进步。