第二次作业

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模块)

 

posted @ 2018-09-24 23:03  K_wang  阅读(158)  评论(0编辑  收藏  举报