作业要求参见https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11206
1、功能1 小文件输入。 为表明程序能跑,结果真实而不是迫害老五,请他亲自键
盘在控制台下输入命令。
功能一重点难点:1、由于一开始没有头绪,不知道该使用什么语言来写更加方便,经过请教学长和我所掌握的语言的熟练程度最终选择用python语言来完成。
2、由于使用控制台和命令行输入和输出,所以要把.py文件转换成.exe文件,这就用到pyinstalle。
功能一实现代码介绍:先定义计算文件单词的函数,然后打开文件,利用read()读取文件全部内容,然后调用统计单词的函数。
def jisuanTotal(word): user_counters=Counter(word) total=0 for user_counter in user_counters: total+=1 print("total "+str(total)+" words ") lsts=user_counters.most_common(10) for lst in lsts: print("%s %d"%(lst[0],lst[1])) def word_list(filename): with open(filename,encoding='utf-8') as f: content=f.read() words=re.findall(r'[w^-]+',content)
结果展示:
2、功能二 支持命令行输入英文作品的文件名,请老五亲自录入。
重点代码展示:首先打开文件,用read()方法读取文件全部内容,然后再使用功能一的函数对单词进行输出。功能二改进了功能一所没有的异常处理,文件不存在时输出文件名+does not exist.
def file_name(path): path=path+'.txt' try: with open(path,encoding='utf-8') as f: content=f.read() except FileNotFoundError: msg="The file"+path+"does not exist." print(msg) else: words=re.findall(r'[w^-]+',content) jisuanTotal(words)
结果展示:
3、功能三:支持命令行输入存储有英文作品文件的目录名,批量统计。
代码实现:首先输入存储有英文作品的文件名,然后判断是否为文件,os.path.splitext(“文件路径”)用于分离文件名与扩展名;默认返回(fname,fextension)元组
def file_floder(path): dirs = os.listdir(path) for file in dirs: if os.path.isfile(file): print(os.path.splitext(file)[0]) with open(file, encoding='utf-8') as f: words = re.findall(r'[w^-]+', f.read()) jisuanTotal(words) print('----')
运行结果:
4、功能四从控制台读入英文单篇作品,这不是为了打脸老五,而是为了向你女朋
友炫酷,表明你能提供更适合嵌入脚本中的作品(或者如她所说,不过是更灵活
的接口)。如果读不懂需求,请教师兄师姐,或者 bing: linux 重定向,尽管
这个功能在windows下也有,搜索关键词中加入linux有利于迅速找到。
由于不懂重定向,查阅资料后最终也没能解决
5、psp
6、coding net地址:https://e.coding.net/weichenaa/word/wordfrequency.git
github地址:https://github.com/Wei-chenTF/word