第二次作业
gitee项目地址:https://gitee.com/K_wang/BIN/tree/master
功能
基本功能:(已完成)
wc.exe -c file.c //返回文件 file.c 的字符数
wc.exe -w file.c //返回文件 file.c 的单词总数
wc.exe -l file.c //返回文件 file.c 的总行数
wc.exe -o outputFile.txt file.c //将结果输出到指定文件outputFile.txt
一:解题
看到WC的需求说明时,首先想到以前写的代码,统计一个字符串中字符的个数。不过这次内容多了对用户命令的判断、文件的输入输出,以及对行数、单词数的判断。从网上看到很多有关WC的分析和教程,学习了几篇C#的,发现它们都是其他学校的学生做的实验,我发现我跟他们差的挺远。最近在跟随室友学习python,所以最后决定用python写一个程序。这次用简单的方法来实现,用python中的正则表达式(re模块)来筛选特定字符,达到统计数目的目的。
二:代码的实现
2.1 文件的输入输出格式
path = os.getcwd()+"\\"+txt+".c" w = open(path,"a+")
path_new = os.getcwd()+"\\"+"result.txt" #输出结果的路径 result = open(path_new,"a+") result.write(txt+".c"+","+"字符数:"+str(len(r.search(z).group()))) #将解析出的字符用write方法写入result.txt文件中
2.2 用正则表达式.search()提取文件中所有字符,统计字符个数,结果写入目标文档
import os import re import sys #导入os文件库,re 正则表达式库。 reload(sys) sys.setdefaultencoding('gbk') #编码格式为 "gbk" dir_path = raw_input() if dir_path.find("-c")!=-1: txt = dir_path.split(" ")[-1].split(".")[0] z =".txt" path = os.getcwd()+"\\"+txt+".c" w = open(path,"a+") z = w.read() r = re.compile(r'(.|\n)*') #运用正则表达式,解析字符个数 w.close() path_new = os.getcwd()+"\\"+"result.txt" #输出结果的路径 result = open(path_new,"a+") result.write(txt+".c"+","+"字符数:"+str(len(r.search(z).group()))) #将解析出的字符用write方法写入result.txt文件中 result.close()
2.3 用正则表达式.split()方法进行字符串分割,统计单词数,结果写入目标文档
if dir_path.find("-w")!=-1: txt = dir_path.split(" ")[-1].split(".")[0] z =".txt" path = os.getcwd()+"\\"+txt+".c" w = open(path,"a+") z = w.read() w.close() path_new = os.getcwd()+"\\"+"result.txt"# 输出结果的路径 result = open(path_new,"a+") result.write(txt+".c"+","+"单词数:"+str(len(z.split(" ")))) #运用.split方法将结果写入result.txt文件中 result.close()
2.4 用正则表达式 .readlines方法读取文件中的行数,并计入count变量中,结果写入目标文档
if dir_path.find("-l")!= -1: txt = dir_path.split(" ")[-1].split(".")[0] z =".txt" path = os.getcwd()+"\\"+txt+".c" jii = open(path,'rU') count = len(jii.readlines()) #读取文件中的行数,计入count变量中 path_new = os.getcwd()+"\\"+"result.txt" jii.close() result = open(path_new,"a+") result.write(txt+".c"+","+"行数:"+str(count)) result.close()
3.测试
3.1 测试文本
3.2结果文本
--------------------------------------------------------------------------
结束
C#基础不好,只能简单学习操作流程和方法。寝室有个python的大神,请教学习了一天,完成了基本工作,还要继续学习。
--------------------------------------------------------------------
参考
https://blog.csdn.net/qq1124794084/article/details/51536528 ------python正则表达式split()方法详解
https://www.cnblogs.com/tina-python/p/5508402.html -----python中的正则表达式(re模块)