软工作业-wc(python实现)

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)

 

四、测试运行

  1. 空文件:

     

  2. 只有一个字符的文件:

     

  3. 只有一个world单词的文件

     

  4. 只有一行 hello world 的文件

     

  5. 一个源文件

     

 

五、项目小结

在对于行数、单词和字符的统计的代码写的还算顺利,但是当写到命令行的时候就卡了很久了,花了大量的时间去查了相关的模块argparse、os,sys,但在命令行参数的使用和理解上还是比较吃力,后来去请教他人才得到解决。通过这次项目让我看到了自身还存在许多不足,知识量还是太少,需要更加刻苦学习来充实自己。

 

posted @ 2018-09-10 23:41  Dandelion-L  阅读(278)  评论(2编辑  收藏  举报