GitHub地址:https://github.com/dandelionlxj/Word-counter
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 20 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 20 |
Development | 开发 | 1440 | 1200 |
· Analysis | · 需求分析 (包括学习新技术) | 60 | 100 |
· Design Spec | · 生成设计文档 | 60 | 30 |
· Design Review | · 设计复审 (和同事审核设计文档) | 60 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 30 |
· Design | · 具体设计 | 60 | 30 |
· Coding | · 具体编码 | 60 | 30 |
· Code Review | · 代码复审 | 30 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 60 |
Reporting | 报告 | 60 | 60 |
· Test Report | · 测试报告 | 60 | 30 |
· Size Measurement | · 计算工作量 | 10 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 20 |
合计 |
| 2030 | 1690 |
基本功能列表:
wc.py -c file.c //返回文件 file.c 的字符数
wc.py -w file.c //返回文件 file.c 的词的数目
wc.py -l file.c //返回文件 file.c 的行数
对于字符串,单词和行数的统计,由于前段时间在学习python,所以我第一时间就想到用python写。要实现这些功能,首先就是先找到文件的位置,或者说先打开这个文件,然后遍历这个文件,三个功能对应三个函数,最后调用这三个函数然后输出结果
三、代码说明:
#导入argparse模块,处理命令行参数 import argparse parser=argparse.ArgumentParser(description='this is wc.exe') parser.add_argument('-c', dest='char' ) parser.add_argument('-w', dest='word' ) parser.add_argument('-l', dest='line' ) args=parser.parse_args()
def Line_count(args):#统计行数 lines=0 with open(args,'r',encoding='utf-8') as f: for line in f: lines+=1
return lines
def Word_count(args):#统计单词数 words=0 with open(args,'r',encoding='utf-8') as f: for line in f: word=line.split() words+=len(word) return words
def Character_count(args):#统计字符数 characters=0 with open(args,'r',encoding='utf-8') as f: for line in f: characters+=len(line) return characters
#调用函数并输出结果 if args.line: #当参数为-l line_count=Line_count(args.line) print('行数:',line_count) if args.word: #当参数为 -w word_count=Word_count(args.word) print('单词数:',word_count) if args.char: ##当参数为 -c character_count=Character_count(args.char) print('字母数:',character_count)
四、测试运行
-
空文件:
-
只有一个字符的文件:
-
只有一个world单词的文件
-
只有一行 hello world 的文件
-
一个源文件
五、项目小结
在对于行数、单词和字符的统计的代码写的还算顺利,但是当写到命令行的时候就卡了很久了,花了大量的时间去查了相关的模块argparse、os,sys,但在命令行参数的使用和理解上还是比较吃力,后来去请教他人才得到解决。通过这次项目让我看到了自身还存在许多不足,知识量还是太少,需要更加刻苦学习来充实自己。