python实现什么功能_Python 实现WC功能

项目要求

基本要求

-c 统计文件字符数 (实现)

-w 统计文件词数 (实现)

-l 统计文件行数(实现)

扩展功能

-s 递归处理目录下符合条件得文件(实现)

-a 返回文件代码行 / 空行 / 注释行(实现)

高级功能

-x 图形化界面(未实现)

解题思路

实现对文本的统计

读取文件

使用正则表达式处理文本内容

再实现拓展功能更复杂的统计及批量操作

用os模块获取文件以及判断是文件或目录

遍历目录下所有符合的文件

最后实现命令参数解析

用sys模块实现在命令行解析参数

设计

将各个功能放在不同文件中

主文件及相应模块

WC.py:

recursive(list) (遍历文件)

wc(f, arg) (实现命令参数解析)

统计字符文件及模块

strCount.py:

str_count(name)

统计行数文件及模块:

lineCount.py:

line_count(name)

统计单词文件及模块:

wordsCount.py:

words_count(name)

统计代码行/空行/注释行文件及模块:

codeCount.py:

code_count(name)

流程图

1488052-20180914230222443-427570754.png

代码说明

1. 遍历文件

defrecursive(list):

f_list=os.listdir(list)return f_list

2. 统计字符数

defstr_count(name):

with open(name,'r', encoding='UTF-8') as f:

n=0for line inf.readlines():

n+=len(line)return n

3. 统计行数

defline_count(name):

with open(name,'r', encoding='UTF-8') as f:

n=0for line inf:

n+= 1

return n

4. 统计单词数

importredefwords_count(name):

with open(name,'r', encoding='UTF-8') as f:

n=0for line inf.readlines():

list_match= re.findall('[a-zA-Z]+', line.lower())

n+=len(list_match)return n

5. 统计空行/代码行/注释行数

defcode_count(name):

with open(name,'r', encoding='UTF-8') as f:

code_lines=0

comm_lines=0

space_lines=0for line inf.readlines():if line.strip().startswith('#'):

comm_lines+= 1

elif line.strip().startswith("'''") or line.strip().startswith('"""'):

comm_lines+= 1

elif line.count('"""') == 1 or line.count("'''") == 1:whileTrue:

line=f.readline()

comm_lines+= 1

if ("'''" in line) or ('"""' inline):break

elifline.strip():

code_lines+= 1

else:

space_lines+= 1

return code_lines, comm_lines, space_lines

6. 命令行逻辑

defwc(f, arg):if arg[1] == '-c':

str_num=str_count(f)print(f + "文件字符数为:", str_num)elif arg[1] == '-w':

word_num=words_count(f)print(f + "文件单词数为:", word_num)elif arg[1] == '-l':

line_num=line_count(f)print(f + "文件行数为:", line_num)elif arg[1] == '-a':

code_lines_num, comm_lines_num, space_lines_num=code_count(f)print(f + "文件代码行为:", code_lines_num)print("注释行为:", comm_lines_num)print("空行为:", space_lines_num)

测试运行

由于事先设置了工作路径所以默认路径与代码所在路径不同

基本模块测试

1488052-20180914232239789-958257465.png

扩展模块测试

1488052-20180914232351711-1658775879.png

递归遍历文件夹下文件测试

1488052-20180914232506757-494825868.png

文件名出错时

1488052-20180914232615214-1731856151.png

代码覆盖率

1488052-20180914233312948-1180825798.png

PSP

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

60

60

· Estimate

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

60

60

Development

开发

300

360

· Analysis

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

60

100

· Design Spec

· 生成设计文档

30

30

· Design Review

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

20

30

· Coding Standard

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

30

20

· Design

· 具体设计

30

30

· Coding

· 具体编码

240

300

· Code Review

· 代码复审

30

40

· Test

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

60

60

Reporting

报告

20

30

· Test Report

· 测试报告

60

60

· Size Measurement

· 计算工作量

20

20

· Postmortem & Process Improvement Plan

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

20

30

合计

1040

1220

项目总结

以前写代码从没考虑过这么多,总是思考一阵之后便直接上手,遇到什么问题就查书查网上资料解决,突然想改就把之前写的模块推翻重来,因此也做了不少无用功,而且也很少总结,现在这样虽然工作量多了但是却感觉比以前开发要更快,少走了不少弯路,而且有写了博客后也感觉比之前掌握的更加扎实。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据处理常用函数_Python大数据处理模块Pandas

Pandas使用一个二维的数据结构DataFrame来表示表格式的数据,相比较于Numpy,Pandas可以存储混合的数据结构,同时使用NaN来表示缺失的数据,而不用像Numpy一样要手工处理缺失的数据,并且Pandas使用轴标签来表示行和列 1、…

计算机学院校友论坛,西工大计算机学院北京校友论坛成立并举办第一次活动

2021年5月16日,西北工业大学计算机学院北京校友论坛成立会议暨第一次活动在北京召开,在京计算机学院院友齐聚一堂共同研讨计算机领域新技术、新发展,共叙同窗情,共谋新未来。西北工业大学校友总会办公室副主任刘江、计算机学院院长…

邢台职业技术学院计算机系宿舍,邢台职业技术学院宿舍条件怎么样 男生女生宿舍图片...

大学马上就要开学了,邢台职业技术学院宿舍条件怎么样,有没有独立卫浴和空调,宿舍环境如何,想必是邢台职业技术学院大一新生最想知道的。小编整理了《邢台职业技术学院宿舍条件怎么样男生女生宿舍图片》一文,供大一新生…

常用计算机 启动bios,详解各种电脑开机怎么进入bios设置

开机怎么进入bios呢?电脑品牌上百种,每种品牌又有各种类型,BIOS的类型成百上千,bios设置方法也不计其数。BIOS是整个系统中最神密最难掌握的,开机怎么进入bios?bios设置方法真的是一件伤脑筋的事。针对以上的问题,小…

国服服务器_外服玩家热议LOL国服倒计时插件:说好的公平竞技呢?

对于很多国服的英雄联盟玩家来说,自从多年前各种盒子辅助软件出现之后,玩家就越来越依赖这些辅助工作所提供的便捷,虽说在过去几年间官方已经对这些功能尽量进行了简化以及遏制,但比如打野计时器、水晶计时、眼位监视等等至今仍然…

int转unsigned int_谢劲课题组在基于锰催化的转金属化基元反应取得系列进展

本文来自微信公众号:X-MOLNews用廉价的过渡金属催化剂替代贵金属催化剂是解决未来自然资源问题紧缺的一个很好选择。锰是地壳中含量排第三位的过渡金属,价格便宜,环境危害小。但由于其较低的催化活性,锰催化参与的许多金属有机化学…

pip更换镜像源_Ubuntu20.04LTS更换软件源镜像

我用的是Linux的Windows子系统下的Ubuntu20.04LTS版本,这个版本很重要!首先是备份一下开始的源打开位置/etc/apt/sources.list备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后删除掉sources.listsudo rm /etc/apt/sources.list在目录 …

云教版认识计算机说课,【教学设计】第1册第1课《认识电脑交朋友》

备课时间:2017年9月3日一、教材分析本节课是省编最新版《小学信息技术》教材第一册第一课。“学一学”由三个部分组成:探寻电脑应用技术;了解电脑组成;养成良好习惯。这三个部分的知识,不仅拓展了学生的视野&#xff0…

cdn需要备案吗_车子贴改色膜需要到车管所备案吗?

改色膜至今为止已经流行很多年了,但还是有部分车主对于贴改色膜之后备案这个事情还不是很了解,对于这个就来点知识小科普吧~~首先汽车贴改色膜是合法的,但这个也是有前提的,首先汽车车身更换颜色超过30%的话,就需要到车…

mysql数据库中文显示_关于Mysql数据库中文显示问题

挣扎在初级Web开发,无论是hibernate还是基础的jdbc都要涉及到一个编码问题,毕竟编程这套东西是伦家外国银发明的,我大中华的程序猿不得不低头,闲言少叙。严明而言,3点:1.mysql配置文件my.ini中添加2条&…

读算法霸权笔记03_操控与恐吓

1. 市场失灵 1.1. 探索市场失灵现象就像寻宝游戏,很有意思 1.2. 建立一种算法来预测这个循环出现差错——多找回的两枚硬币——的可能性并对此下注 1.2.1. 盈利模式消失了,或者市场中的其他人也了解了这个模式,先行者优势消失 1.3. 在很多…

win10看计算机属性,win10系统查看windows7版本号要比计算机属性具体的图文步骤

win10系统使用久了,好多网友反馈说关于对win10系统查看windows7版本号要比计算机属性具体设置的方法,在使用win10系统的过程中经常不知道如何去对win10系统查看windows7版本号要比计算机属性具体进行设置,有什么好的办法去设置win10系统查看w…

myeclipse怎么创建jframe类_创建型-建造者模式

一个对象创建的时候,需要各种初始化化,有一套复杂的创建流程,如果这些流程散布在系统各个地方的话,会越来越难以维护,因此建造者模式就是把一套复杂的创建某个具体产品的流程,管理起来。定义:将…

mysql占用内存吗_mysql占多少内存

展开全部MySQL 自身内存规62616964757a686964616fe4b893e5b19e31333433646463划说到 MySQL 自身的内存规划,最先想到的就是 MySQL 中各种 buffer 的大小,innodb buffer pool 就是最鹤立鸡群的那个。innodb_buffer_pool_size 参数的大小究竟如何设置&…

计算机鼠标装有,计算机鼠标装有传感器来监视鼠标的移动情况,如图

利用欧姆定律进行计算:根据串、并联电路的特点和欧姆定律的公式可进行有关计算。解题的方法是:(1)根据题意画出电路图,看清电路的组成(串联还是并联);(2)明确题目给出的已知条件与未知条件,并在电路图上标明&#xff1…

docker portainer_「实战篇」开源项目docker化运维部署-Portainer管理集群部署(十)...

之前都是通过命令的方式,管理docker的,其实docker还是有图形界面的。使用图形界面如何管理docker,其实业界很多公司都对docker进行了图形化的封装。之前在初级和中级的时候也有界面marathon。这里说下业界比较出名的portainer。portainer官网…

怎么快速搜索服务器里的文件,使用 Everything,快速搜索电脑文件,制作局域网资料搜索器 | 科技搜...

所需工具:Everything在 Windows 系统中,已经有自带的资源管理器文件查找功用,当然也有其他的一些软件辅佐查找,但是这些都不及一款软件,名字叫 Everything ,速度非常快,支持正则表达式&#xff…

hive left outer join 子查询临时表_基于历史数据的用户访问次数,每天新老用户,日活,周活,月活的hive计算...

最近有一个需求,统计每天的新老用户,日活,周活,月活。 我们每天的增量数据会加入到hive历史数据表中,包含用户访问网站的一些信息,字段有很多,包括用户唯一标识guid。 当然了日活,周…

sql server2008r2 没有提示_SQL学习之旅(1)

从2020.07.28开始跟着猴子哥系统学习数据库,在此记录自己的sql学习与练习过程,希望能为以后的自己带来帮助。SQL简介练习1:1.如何验证mysql数据库安装成功?在完成环境变量的配置的情况(在Path中添加mysql的bin目录路径…

order by 子查询_【框架】118:mybatis之多表高级查询

今天是刘小爱自学Java的第118天。感谢你的观看,谢谢你。学习内容安排如下:补充说明知识点:resultMap,sql片段。mybatis中的高级查询,即多表关联查询。查询主要分为:一对一,一对多,多…