通过python实现wc基本功能
---恢复内容开始---
1.Github项目地址:
https://github.com/zhg1998/ww/blob/master/wc.py
2.项目相关要求:
写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。
实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。
具体功能要求:
程序处理用户需求的模式为:
wc.exe [parameter] [file_name]
基本功能列表:
wc.exe -c file.c //返回文件 file.c 的字符数 (已实现)
wc.exe -w file.c //返回文件 file.c 的词的数目 (已实现)
wc.exe -l file.c //返回文件 file.c 的行数 (已实现)
扩展功能:
-s 递归处理目录下符合条件的文件。
-a 返回更复杂的数据(代码行 / 空行 / 注释行)。
空行:本行全部是空格或格式控制字符,如果包括代码,则只有不超过一个可显示的字符,例如“{”。
代码行:本行包括多于一个字符的代码。
注释行:本行不是代码行,并且本行包括注释。一个有趣的例子是有些程序员会在单字符后面加注释:
} //注释
在这种情况下,这一行属于注释行。
[file_name]: 文件或目录名,可以处理一般通配符。
高级功能:
-x 参数。这个参数单独使用。如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。
3.PSP表
PSP2.1 |
Personal Software Process Stages |
预估耗时(小时) |
实际耗时(小时) |
Planning |
计划 |
1 |
2 |
· Estimate |
· 估计这个任务需要多少时间 |
50 |
60 |
Development |
开发 |
32 |
40 |
· Analysis |
· 需求分析 (包括学习新技术) |
8 |
10 |
· Design Spec |
· 生成设计文档 |
1 |
1.5 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0.5 |
0.5 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
1 |
1.5 |
· Design |
· 具体设计 |
2 |
5 |
· Coding |
· 具体编码 |
24 |
30 |
· Code Review |
· 代码复审 |
2 |
2 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
1 |
2 |
Reporting |
报告 |
1 |
1 |
· Test Report |
· 测试报告 |
1 |
1.5 |
· Size Measurement |
· 计算工作量 |
0.5 |
0.5 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
1 |
1 |
合计 |
126 |
158.5 |
4.解题思路
拿到题目后,我认为用python写会比较的简便,以为实现wc的功能比较容易完成,只是我对python的了解比较浅,所以只实现了基础功能。由于是对字符数,词数,和行数的统计,需要先打开文件,然后用一个for循环和实现对字符数,行数和单词数的统计,其中我在单词数的统计中遇到了困难,经过思考后,我决定通过将空格替代掉代码行前后的非数字和字母后删去空格的方法以及使用正则表达实现了对单词数的统计,由于实现基础功能所消耗的时间较长,所以我没有做后续的扩展功能和高级功能。
5.设计实现过程
通过main函数对文件的读取和输出对应指令的统计数值,调用了open()的方法打开文件和条件判断语句输出相应值,在read_file()中对三个基本功能的实现,调用了len()函数,line.strip()函数以及使用了正则表达式对单词统计功能的实现。
6.代码说明
1.三种基本功能的实现
2.主函数,打开文件以及输出对应指令的统计值。
7.测试运行
测试文件
测试结果
测试文件
测试结果
测试文件
测试结果
8.代码覆盖率
9.项目小结
我是通过课余时间断断续续来进行python的学习的,也没怎么经过练习,所以用起来任然是比较生疏。看到作业后,我就想尝试一下用python去实现,虽然只实现了简单的基础功能,然而编写代码的过程还是遇到了不小的困难。从构思到编程,我还回书中和网上查找各函数的用法,也算是当做一次复习,不过也耗费了一些时间。这是我第一次列psp表以及写博客,在psp表中预估的时间和实际耗费的时间还是有些出入,这次作业让我初步体验到了软件工程开发的严谨以及规范性,同时我也发现了列psp表的好处,能更好的规划好时间。总的来说,这次作业的练习让我知道自己编程的能力还是较差以及对python的理解和用法还是较为生疏,同时应该在接下来的学习中更加努力来提高自己的能力。
---恢复内容结束---
通过python实现wc基本功能的更多相关文章
- Atitit php java python nodejs错误日志功能的比较
Atitit php java python nodejs错误日志功能的比较 1.1. Php方案 自带 1 1.2. Java解决方案 SLF4J 1 1.3. Python解决方案 自带lo ...
- Python实现进度条功能
Python实现进度条功能 import sys, time def progress(percent, width=50): # 设置进度条的宽度 if percent >= 100: # 当 ...
- 使用 python 实现 wc 命令程序的基本功能
这里使用了 python 的基本代码实现了 Linux 系统下 wc 命令程序的基本功能. #!/usr/bin/env python #encoding: utf-8 # Author: liwei ...
- Python 实现WC功能
GitHub仓库:https://github.com/15crmor/PAC 项目要求 基本要求 -c 统计文件字符数 (实现) -w 统计文件词数 (实现) -l 统计文件行数(实现) 扩展功能 ...
- Python模拟wc命令(软件测试第二次作业)
Python实现字符,单词,行,代码行,空行及可视化 Gitee项目地址:https://gitee.com/biubiubiuLYQ/word_and_character_statistics 一. ...
- python实现简单爬虫功能
在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...
- Python:安装mssql模块功能,并实现与sqlserver连接、查询
由于我系统是x64系统,所以下载python2.7 x64.下载地址:https://www.python.org/downloads/release/python-2712/, 经过测试发现这个版本 ...
- python10min系列之面试题解析:python实现tail -f功能
同步发布在github上,跪求star 这篇文章最初是因为reboot的群里,有人去面试,笔试题有这个题,不知道怎么做,什么思路,就发群里大家讨论 我想了一下,简单说一下我的想法吧,当然,也有很好用的 ...
- Python实现脚本锁功能,同时只能执行一个脚本
1. 文件锁 脚本启动前检查特定文件是否存在,不存在就启动并新建文件,脚本结束后删掉特定文件. 通过文件的判断来确定脚本是否正在执行. 方法实现也比较简单,这里以python脚本为例 #coding= ...
随机推荐
- Tkinter Listbox(列表框)
Python - Tkinter Listbox(列表框): 列表框部件用于显示一个项目列表,用户可以选择的项目数 列表框部件用于显示一个项目列表,用户可以选择的项目数. 语法: 这里是一个简单的 ...
- python的socket编程之udp编程
在上篇文章中,仅仅讲述了如何进行了TCP编程,在本章中,将讲述使用udp进行编码,先看如下的代码,服务器端: root@python 513]# cat serverudp.py #!/usr/bin ...
- sort_region——对区域进行排序
The operator sort_region sorts the regions with respect to their relative position. All sorting meth ...
- 一次性show 出所有配置
cisco的全页打印显示配置信息的命令: #terminal length 0 #show run 华为和H3C的全页打印显示配置信息的命令: ]user-interface vty 0 4 ]scr ...
- Flat Shading
[Flat Shading] Per-vertex渲染技术是针对每个顶点进行渲染计算,然后把计算得到的颜色值和这个顶点关联起来.然后在多边形的面上进行颜色插值以后的平滑的渲染效果.这也叫做Gourau ...
- 二维码生成插件qrious及网站扫码登录的一些理解
什么是二维码 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型. ...
- js使用浏览器的另存为下载文件
页面上的页面如下: 我需要根据返回的url下载文件: js: //判断浏览器类型 function myBrowser(){ var userAgent = navigator.userAgent; ...
- Unity3d 下websocket的使用
今天介绍一下如何在Unity3D下使用WebSocket. 首先介绍一下什么是websocket,以及与socket,和http的区别与联系,然后介绍一下websocket的一些开源的项目. WebS ...
- Item2的使用
网址:http://wulfric.me/2015/08/iterm2/ 巧用 Command 键 按住⌘键: 可以拖拽选中的字符串: 点击 url:调用默认浏览器访问该网址: 点击文件:调用默认程序 ...
- HAproxy-1.6.3 安装部署
反向代理优缺点: haproxy反向代理高性能的HTTP,TCP反向代理 nginx:优点:1.web服务器,比较广泛2.工作7层location设置比较复杂基于HTTP(url,cookies,ag ...