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命令相关推荐

  1. python matplotlib三维画图、二维画图常用命令总结

    python常用画图命令总结 1.python matplotlib三维画图 2.python matplotlib二维画图 1.python matplotlib三维画图 import matplo ...

  2. 计算机在线作业office,16春地大《计算机级等级考试Office》在线作业二.doc

    16春地大<计算机级等级考试Office>在线作业二 谋学网 HYPERLINK "" 地大<计算机一级等级考试Offi>在线作业二 一.单选题(共 17 ...

  3. 计算机应用基础中什么是桌面,福师《计算机应用基础》在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置...

    福师<计算机应用基础>在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置 (12页) 本资源提供全文预览,点击全文预览即可 ...

  4. linux每日命令(36): wc命令

    阅读目录(Content) 一.命令格式 二.命令功能 三.命令参数 四. 使用实例 1. 查找指定进程 2. 用wc命令只打印统计数字不打印文件名 3. 统计当前目录下的文件数 Linux系统中的w ...

  5. 吉大20春学期C语言程序设计作业二,吉大18春学期《C语言程序设计》在线作业二【答案】...

    吉大17秋学期<C语言程序设计>在线作业二-0004 试卷总分:100    得分:0 一. 单选题 (共 10 道试题,共 40 分) 1.sizeof(float)是 A.一个双精度型 ...

  6. python调用shell命令-Python调用shell命令常用方法(4种)

    方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令 ...

  7. 2017计算机在线作业二,《计算机应用基础》2017年秋学期在线作业(二)满分答案...

    <计算机应用基础>2017年秋学期在线作业(二) 试卷总分:100 得分:100 一.单选题 1.在Word的编辑状态,设置了一个由多个行和列组成的空表格,将插入点定在某个单元格内,右击该 ...

  8. 开放大学计算机应用基础形考答案,国家开放大学计算机应用基础形考作业二答案~.doc...

    国家开放大学计算机应用基础形考作业二答案~.doc -_题目题目 1 1在 Word 2010 中编辑文本时,编辑区显示的"网格线"在打印时( )出现在 纸上.选择一项A. 全部 ...

  9. 吉大18秋学期C语言作业二答案,吉大18秋《C语言程序设计》在线作业12参考

    ;printf("%d"",s);}          (满分:)A, o. `7 d; b2 o0 h! Z A. 22 $ i: K+ i& J: e3 h+ ...

最新文章

  1. Windows Phone 7第一次亲密接触
  2. Linux脚本传递参数
  3. USACO 2.3.3 罗马数字
  4. 在VS.NET2003中无法新建C#项
  5. 使下拉框某项不可选的方法
  6. STM32mini使用UCOSII信号量和邮箱实现任务挂起和恢复
  7. python画玫瑰图_央视都在用的“南丁格尔玫瑰图”,原来Python也可以画
  8. 【算法】BitMap
  9. petshop 4.0的数据持久层
  10. mysql的其中连接方式_MySQL选择连接中的位置,但不在其中
  11. IronRuby 发布第一个版本
  12. Get value from agent failed: cannot connect to [[192.168.121.128]:10050]:[4]Interrupted systemctl ca
  13. [转载] python十个程序_程序猿开发Python的十个基本入门技巧?
  14. 微软Windows7对Vista的几点改进
  15. 连载IT小说《失业的程序员》讲述一个Android开发者的奋斗史
  16. 史上最严重数据泄露:5亿雅虎账户于2014年被盗
  17. 百度地图API获取经纬度实战
  18. Cxgrid控件中限制单元格输入类型以及显示格式
  19. BZOJ 4199 品酒大会
  20. 即构SDK新增变声、立体声(3D环绕)、混响三大功能

热门文章

  1. Order笔记-数据库创建
  2. Jquery : 上下滚动--单行 批量多行 文字图片翻屏【转】
  3. Python当前进程信息 (os包)
  4. 第二次冲刺阶段第四天
  5. ASP.NET(一):Reques对象和Response对象的区别,以及IsPostBack属性的用法
  6. makeMtk- user 版本编译
  7. WinCE 和Win Mobile的关系
  8. 软件工程师不可不知的10个概念
  9. java 最少使用(lru)置换算法_「面试」LRU了解么?看看LinkedHashMap如何实现LRU算法...
  10. bat 删除文件_利用电脑文本文档建立一个简单方便的删除文件的小程序