python实现wc功能

项目地址:https://github.com/Anko233/wc/blob/master/wc.py

 拿到题目后,发现这个作业需要打开文件,使用正则表达式匹配,接受命令行参数等操作,于是就有搜索引擎查找了许多有关这方面的内容.

 

整体设计思路是使用命令行参数进行for循环,再使用if-elif-else进行匹配,每个命令行参数的实现做成一个函数

 

 实现了-a -c -l -w 的功能

-l 功能:只需要打开文件,然后使用 for循环读取文件,每读取一次计数器加一,就能得出结果

def line(f):#计算行数的函数
    i = 0
    for line in f:
        i += 1
    print("Line number is ", i)

 

-c 功能:使用read()函数,再使用len()函数,即可读取字符数(我认为\n也算是一个字符)

def character(f):#计算字符数的函数
    print("Character number is ", len(f.read()))

之前想过用正则表达式识别\n,但是后来发现代码中也可能包含\n,这样计数就会出现错误

 

-w 功能:使用正则表达式找出所有的词数,用findall()返回一个列表,再用len()计算数量

def word(f):#计算单词数的函数
    w = re.compile("[a-z]+", re.I).findall(f.read())
    print("Word number is ",len(w))

-a 基本思路是先判断是否为空行,再判断是否为单行注释,最后判断是否为注释块,都不是则为代码行,思路有些繁琐,而且对文件中有包含/*, */, //的字符串会出现识别错误

 

运行完一个函数后,文件对象指针指向末尾,应此要用符f.seek(0, 0)使其指向开头

 测试:

空文件

python实现wc功能_第1张图片

单字符文件

python实现wc功能_第2张图片

单词文件

python实现wc功能_第3张图片

单行文件:this is a line of test4

python实现wc功能_第4张图片

标准文件test

已上传至github

python实现wc功能_第5张图片

经测试包含/**/类型的注释代码正则表达式匹配会出现问题

 

PSP表

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

10

5

· Estimate

· 估计这个任务需要多少时间

10

5

Development

开发

 330

 500

· Analysis

· 需求分析 (包括学习新技术)

 60

 80

· Design Spec

· 生成设计文档

0

 0

· Design Review

· 设计复审 (和同事审核设计文档)

 0

 0

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

0

 0

· Design

· 具体设计

 100

 180

· Coding

· 具体编码

 120

 180

· Code Review

· 代码复审

 20

 30

· Test

· 测试(自我测试,修改代码,提交修改)

30

 30

Reporting

报告

30

 50

· Test Report

· 测试报告

 10

 20

· Size Measurement

· 计算工作量

 10

 10

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 10

 20

合计

 

370

555

你可能感兴趣的:(python实现wc功能)