博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python实现wc功能
阅读量:5904 次
发布时间:2019-06-19

本文共 1480 字,大约阅读时间需要 4 分钟。

项目地址: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)使其指向开头

 测试:

空文件

单字符文件

单词文件

单行文件:this is a line of test4

标准文件test

已上传至github

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

 

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

转载于:https://www.cnblogs.com/anko233/p/9649702.html

你可能感兴趣的文章
Microsoft® Deployment Toolkit 2010之快速部署Windows 7
查看>>
LNMP的技术讲解
查看>>
SVN Hooks的介绍及使用
查看>>
Oracle 字符集的查看和修改【上】
查看>>
tomcat注册windows服务
查看>>
使用qq邮箱的smpt服务发送邮件一定要记得用ssl
查看>>
20个非常有用的Java代码片段
查看>>
转 ubuntu解压命令全览
查看>>
Android开发的前景分析——之你为何看好Android?
查看>>
linux学习笔记
查看>>
页面自动刷新
查看>>
No free lunch in search and optimization
查看>>
分析 Spring 的编程式事务管理及声明式事务管理(转)
查看>>
网站优化和竞价有什么区别
查看>>
MySQL开源热备工具XtraBackup的原理与程序说明
查看>>
mongoDB(1):windows下安装mongoDB(解压缩版)
查看>>
CentOS修改主机名
查看>>
php 5.3.6中php-fpm 配置
查看>>
XMPP协议分析-原理篇
查看>>
centos7常用操作
查看>>