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,一经查实,立即删除!

相关文章

家用计算机来源,美计算机专家称BBS才是博客真正起源

美国计算机科学家莱斯恩斯特(Les Earnest)近日在接受国外媒体采访时表示,早在互联网面世之前,博客的原型就已经出现。恩斯特曾经在斯坦福大学计算机科学系担任高级研究科学家,目前已经退休。上世纪70年代初,他发明了计算机程序“f…

websocket底层处理粘包_Socket解决粘包问题1

粘包是指发送端发送的包速度过快,到接收端那边多包并成一个包的现象,比如发送端连续10次发送1个字符a,因为发送的速度很快,接收端可能一次就收到了10个字符aaaaaaaaaa,这就是接收端的粘包。可能我们在平时练习时没觉的…

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

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

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

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

python爬虫有学c的必要吗_可以一边学python爬虫一边学c语言吗?

数据结2113构和算法并不是一门语言,你可以说有了Python 不用5261学C或者4102C了,但是不能说不需要学数据结构了,因为它是所有语1653言的基础。看你学Python的用途,如果你学Python并不深入,或者用来日常的办公、写个小爬…

python每个字符后添加空格_python实现指定字符串补全空格的方法

有什么方法可以指定字符串长度,不够的自动补空格char定义的是一个半角字符。 当人心变成市场,当市场变成战场,战场埋葬多少理想。char[]定义的是一个不定长的数组,实际上是指针,用前要初始化。不过某些编程环境可能会根…

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

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

c位边上还有什么位_c位是什么意思?C位说法的由来是什么?c位旁边二个位置叫什么?...

今天我们要讲的词是——c位。这个词想必大家一定耳熟能详,哪怕不知道具体的含义,也多多少少听过身边的人说上那么几句。特别是在追星族或者是微博上,总能看到“c位”“c位出道”这一类的词语。所以说,c位到底是什么意思呢?C位当中…

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

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

python测开面试题_python十道经典面试题,测试你的python功底!

来源:python学习专栏 第一题,对象的类属性指向类对象class A(): def show(self): print( A_show ) class B(): def show(self): print( B_show ) obj B() obj.show() #这样我们能够正常调用 #那么我们能不能 #obj.show() #我们想调用A中的show 我们看一下…

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

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

国外计算机专业入门语言,【转自知乎】给想要报考计算机专业学生的一些建议...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼在知乎上问同类的问题较多,在学习上有困惑的同学好像还不少,我就花点时间写一下自己的看法,供在计算机领域起步的同学参考。欢迎业界高人补充和指正。1.本科应该比专科、职业学院要多一些人文类课…

python编辑elif显示错误_Python运行的17个时新手常见错误小结

1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”) 该错误将发生在类似如下代码中: if spam 42 print(Hello!) 2)使用 而不是 (导…

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

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

python的作者为什么要创造python_为什么要学习Python?老男孩Python开发

在众多人的脑海中,Python无非就是一门编程语言而已,并没有什么特色,但是提及学习编程大部分人都会推荐Python,为什么?今天老男孩教育就给你说说学习Python的四大理由吧。首先先来了解一下什么是Python?Python是一个高层次的结合…

东电计算机考研大概分数,2019年各学院硕士研究生拟录取名单公示

2019年电气工程学院拟录取名单.doc 540.0 KB 2019-04-09 09:40 -a--2019年化学工程学院拟录取名单.doc 169.5 KB 2019-04-09 09:17 -a--2019年机械工程学院拟录取名单.doc 63.0 KB 2019-04-05 16:57 -a--2019年计算机工程学院拟录取名单.doc 165…

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在目录 …

rf框架的缺点_2017热门开源自动化测试框架优缺点对比

原标题:2017热门开源自动化测试框架优缺点对比时间一晃已来到 2017 年的最后一个季度,TestProject 对比了在今年比较热门的 7 款开源 自动化测试框架的优缺点,以帮助你选择适合自己的测试框架。1. Robot FrameworkRobot Framework(RF)是用于验…

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

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

python中模块和包是什么_Python中模块和包的概念

将所有代码放入一个py文件&#xff1a;无法维护 如果将代码分拆放入多个py文件&#xff0c;好处&#xff1a; 同一个名字的变量互不影响 模块a 模块b | | V V #a.py #b.py x 5 x str def f1(): def f1(iterable): pass pass 引用其他模块 #test.py <---------------------…