Python实现wc.exe(2.0)

github项目传送门

项目相关要求

  • 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,对挺多概念还有点模糊。总体来说,还是要多多努力,才能进步。

猜你喜欢

转载自www.cnblogs.com/littlebear181/p/9644420.html