作业(二)—python实现wc命令
Gitee地址:https://gitee.com/c1e4r/word-count(为什么老师不让我们用github)
0x00 前言
好久没发博客了,感觉自己的学习是有点偷懒了。这篇博客也是应专业课程老师作业硬性的要求才发的,希望借这次机会,自己能够再次出发,努力向前吧。
0x01 作业思路
老师在课堂上布置了一个作业,总的来说是对一个源文件进行各方面的字符统计,涉及到了文件和字符读取等操作。具体要求如下:
其实要求很简单,主要就是文件读写操作,又必须是用命令行进行,python中自带的sys库和getopt库可以从命令行中获取参数,所以就果断用python来解决了。
0x02 基本实现过程
基本功能只有三个:统计源文件字符,统计源文件单词,统计源文件行数
所以就只需要写三个功能函数加上一个主函数即可实现其功能。话不多说,直接先贴代码:
#Author:c1e4rimport sys import getopt#读取指定文件中的字符数 def read_str(file2):file = sys.argv[-1]file1 = open(file,'r+')count = 0for line in file1.readlines():count_line = len(line)count += count_linef = open(file2,'a+')f.write(file+",字符数:"+str(count)+'\n')file1.close()f.close()#读取指定文件中的单词数 def read_word(file2):file = sys.argv[-1]file1 = open(file,'r+')count = 0for line in file1.readlines():line = line.replace(","," ")line = line.replace("."," ")line = line.replace("!"," ")line = line.replace("?"," ")line_word = len(line.split( ))count += line_word f = open(file2,'a+')f.write(file+",单词数:"+str(count)+'\n')file1.close()f.close()#读取指定文件中的行数 def read_line(file2):file = sys.argv[-1]file1 = open(file,'r+')count = 0for line in file1.readlines():count += 1f = open(file2,'a+')f.write(file+",行数:"+str(count)+'\n') file1.close()f.close()def main():file = "result.txt"try:opts, args = getopt.getopt(sys.argv[1:],"hc:w:l:o:")except getopt.GetoptError:print("test.py [parameter] [input_file_name]")sys.exit(2)finally:passfor opt,arg in opts:if opt == '-h':print("test.py -c -w -l -o <outputfile> [input_file_name]") # -h 使用说明 sys.exit()elif opt == "-c": read_str(file) # -c 返回文件的字符数elif opt == "-w":read_word(file) # -w 返回文件的单词总数elif opt == "-l":read_line(file) # -l 返回文件的总行数elif opt == "-o":file = arg # -o 输出结果的文件 if __name__ == "__main__":main()
其中稍微有点棘手的是统计文件中的单词数量。因为单词和单词之间不一定是空格(可能是各种标点符号),所以就先把每一行中的标点符号替换成空格,最后用split切割,这样每个单词就被筛选出来了。
for line in file1.readlines():line = line.replace(","," ")line = line.replace("."," ")line = line.replace("!"," ")line = line.replace("?"," ")line_word = len(line.split( ))
其他的功能其实就是一个逐行读然后计算的过程,很基础,所以就不做解析了。
0x04 效果截图
程序的效果如下:
后面还要求做个图形化界面。。。我还是老老实实加油学安全吧。
参考文献: Python命令行参数和getopt模块
转载于:https://www.cnblogs.com/c1e4r/p/9696773.html
作业(二)—python实现wc命令相关推荐
- python matplotlib三维画图、二维画图常用命令总结
python常用画图命令总结 1.python matplotlib三维画图 2.python matplotlib二维画图 1.python matplotlib三维画图 import matplo ...
- 计算机在线作业office,16春地大《计算机级等级考试Office》在线作业二.doc
16春地大<计算机级等级考试Office>在线作业二 谋学网 HYPERLINK "" 地大<计算机一级等级考试Offi>在线作业二 一.单选题(共 17 ...
- 计算机应用基础中什么是桌面,福师《计算机应用基础》在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置...
福师<计算机应用基础>在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置 (12页) 本资源提供全文预览,点击全文预览即可 ...
- linux每日命令(36): wc命令
阅读目录(Content) 一.命令格式 二.命令功能 三.命令参数 四. 使用实例 1. 查找指定进程 2. 用wc命令只打印统计数字不打印文件名 3. 统计当前目录下的文件数 Linux系统中的w ...
- 吉大20春学期C语言程序设计作业二,吉大18春学期《C语言程序设计》在线作业二【答案】...
吉大17秋学期<C语言程序设计>在线作业二-0004 试卷总分:100 得分:0 一. 单选题 (共 10 道试题,共 40 分) 1.sizeof(float)是 A.一个双精度型 ...
- python调用shell命令-Python调用shell命令常用方法(4种)
方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令 ...
- 2017计算机在线作业二,《计算机应用基础》2017年秋学期在线作业(二)满分答案...
<计算机应用基础>2017年秋学期在线作业(二) 试卷总分:100 得分:100 一.单选题 1.在Word的编辑状态,设置了一个由多个行和列组成的空表格,将插入点定在某个单元格内,右击该 ...
- 开放大学计算机应用基础形考答案,国家开放大学计算机应用基础形考作业二答案~.doc...
国家开放大学计算机应用基础形考作业二答案~.doc -_题目题目 1 1在 Word 2010 中编辑文本时,编辑区显示的"网格线"在打印时( )出现在 纸上.选择一项A. 全部 ...
- 吉大18秋学期C语言作业二答案,吉大18秋《C语言程序设计》在线作业12参考
;printf("%d"",s);} (满分:)A, o. `7 d; b2 o0 h! Z A. 22 $ i: K+ i& J: e3 h+ ...
最新文章
- Windows Phone 7第一次亲密接触
- Linux脚本传递参数
- USACO 2.3.3 罗马数字
- 在VS.NET2003中无法新建C#项
- 使下拉框某项不可选的方法
- STM32mini使用UCOSII信号量和邮箱实现任务挂起和恢复
- python画玫瑰图_央视都在用的“南丁格尔玫瑰图”,原来Python也可以画
- 【算法】BitMap
- petshop 4.0的数据持久层
- mysql的其中连接方式_MySQL选择连接中的位置,但不在其中
- IronRuby 发布第一个版本
- Get value from agent failed: cannot connect to [[192.168.121.128]:10050]:[4]Interrupted systemctl ca
- [转载] python十个程序_程序猿开发Python的十个基本入门技巧?
- 微软Windows7对Vista的几点改进
- 连载IT小说《失业的程序员》讲述一个Android开发者的奋斗史
- 史上最严重数据泄露:5亿雅虎账户于2014年被盗
- 百度地图API获取经纬度实战
- Cxgrid控件中限制单元格输入类型以及显示格式
- BZOJ 4199 品酒大会
- 即构SDK新增变声、立体声(3D环绕)、混响三大功能
热门文章
- Order笔记-数据库创建
- Jquery : 上下滚动--单行 批量多行 文字图片翻屏【转】
- Python当前进程信息 (os包)
- 第二次冲刺阶段第四天
- ASP.NET(一):Reques对象和Response对象的区别,以及IsPostBack属性的用法
- makeMtk- user 版本编译
- WinCE 和Win Mobile的关系
- 软件工程师不可不知的10个概念
- java 最少使用(lru)置换算法_「面试」LRU了解么?看看LinkedHashMap如何实现LRU算法...
- bat 删除文件_利用电脑文本文档建立一个简单方便的删除文件的小程序