python项⽬描述怎么写_个⼈项⽬(python)
题⽬描述
Word Count
实现⼀个简单⽽完整的软件⼯具(源程序特征统计程序)。
进⾏单元测试、回归测试、效能测试,在实现上述程序的过程中使⽤相关的⼯具。
进⾏个⼈软件过程(PSP)的实践,逐步记录⾃⼰在每个软件⼯程环节花费的时间。
WC 项⽬要求
< 是⼀个常见的⼯具,它能统计⽂本⽂件的字符数、单词数和⾏数。这个项⽬要求写⼀个命令⾏程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语⾔源⽂件的字符数、单词数和⾏数。
实现⼀个统计程序,它能正确统计程序⽂件中的字符数、单词数、⾏数,以及还具备其他扩展功能,并能够快速地处理多个⽂件。
具体功能要求:
程序处理⽤户需求的模式为:
< [parameter] [file_name]
遇到的困难及解决⽅法
困难描述
1.仅仅了解正则表达式,以及未接触过re库,
2.对python标准库tkinter库,os库的学习
做过哪些尝试
查看正则表达式相关⽂档,并学习re库,tkinter,os相关⽂档及csdn博客,期间了解了python三⼤gui库wxpython,tkinter,pygt,
由于wxpython相关⽂档较少以及pyqt上⼿难度较⾼,最终选择了python标准库tkinter
是否解决
使⽤正则表达式解决通配符?,*问题,以及单词匹配问题(汉字⽆法解决,并⽤空格+正则表达式解决单词识别)以及实现gui界⾯(虽然好丑)
有何收获
学会了⼀边查⽂档⼀边编程
很多时候觉得实现这个功能很⿇烦,但开始写代码其实很简单
学习到tkinter,re的使⽤
代码
代码有三个类:text_count()处理⽂本统计,infor_windows() gui界⾯,Order()对命令处理调⽤text_count(),以及handle_file()获得-s命令操作符合的⽂件路径
python怎么读的调⽤相关的库:
import os
import re
import time
import tkinter
from tkinter import ttk
from tkinter import filedialog
class text_count():
def __init__(self, path):
self.path = path
def char_count(self):
# 统计字符数 -c
file_object = open(self.path, 'r', encoding='utf-8') context = ad()
# 将空格和换⾏符去掉
context = place(' ', '')
context = place('\n', '')
string = "字符数为"+str(len(context))
return string
def words_count(self):
# 统计单词数 -w
reg = repile(r'\w+')
file_object = open(self.path, 'r', encoding='utf-8') context = ad()
words = context.split()
for word in words:
if reg.search(word) == None:
string = '单词个数为' + str(len(words))
return string
def lines_count(self):
# 统计⾏数 -l
file_object = open(self.path, 'r', encoding='UTF-8') count = 0
for line in adlines():
count += 1
string = '⾏数为' + str(count)
return string
def more_information(self):
# 返回更复杂的数据(代码⾏ / 空⾏ / 注释⾏) -a
file_object = open(self.path, 'r', encoding='UTF-8')
count = [0, 0, 0]
flag = False # ⽤于判断/*
for line in adlines():
if len(line) <= 1:
count[0] += 1
elif r'//' in line:
count[1] += 1
elif r'/*' in line:
flag = True
count[1] += 1
elif flag:
count[1] += 1
if r'*/' in line:
flag = False
else:
count[2] += 1
string1 = '空⾏数为' + str(count[0])
string2 = '注释⾏数为' + str(count[1])
string3 = '代码⾏数为' + str(count[2])
string_all = [string1, string2, string3]
return string_all
class infor_windows(tkinter.Frame):
def __init__(self, master):
# 将窗⼝分为三个部分,对应三个容器frame1,frame2,order_frame frame1 = tkinter.Frame(master)
frame2 = tkinter.Frame(master)
order_frame = tkinter.Frame(master)
id(row=4, column=12)
# self.name获取⽂件名并显⽰在entry⽂本框
self.name = tkinter.Variable()
< = tkinter.Entry(frame1, textvariable=self.name)
# 显⽰⽂本内容
< = tkinter.Text(frame2, width=40, height=20)
# ⽂件选择按钮 self.select_button,调⽤open_fil()函数
self.select_button = tkinter.Button(
frame1, text='选择', command=self.open_file)
self.select_button.pack(side='right')
# c命令按钮以及结果显⽰
self.c_button = tkinter.Button(
order_frame, text='c命令', der_c)
<_c = tkinter.Variable()
self.show_c = tkinter.Entry(order_frame, _c) self.c_button.pack()
self.show_c.pack()
#
self.w_button = tkinter.Button(
order_frame, text='w命令', der_w)
<_w = tkinter.Variable()
self.show_w = tkinter.Entry(order_frame, _w) self.w_button.pack()
self.show_w.pack()
#
self.l_button = tkinter.Button(
order_frame, text='l命令', der_l)
<_l = tkinter.Variable()
self.show_l = tkinter.Entry(order_frame, _l) self.l_button.pack()
self.show_l.pack()
#
self.a_button = tkinter.Button(
order_frame, text='a命令', der_a)
self.show_a = tkinter.Text(order_frame, width=20, height=3)
self.a_button.pack()
self.show_a.pack()
# 使⽤text_count类并传递参数,调⽤相应函数返回结果def order_c(self):
count_c = text_count(self.file_name)
<_c.set(count_c.char_count())
def order_w(self):
count_w = text_count(self.file_name)
<_w.set(count_w.words_count())
def order_l(self):
count_l = text_count(self.file_name)
count_l.char_count()
<_l.set(count_l.lines_count())
def order_a(self):
count_a = text_count(self.file_name)
strings = _information()
for string in strings:
self.show_a.insert('insert', string + '\n')
def open_file(self):
# set()及delete()将所有⽂本清零
self.name.set('')
<_c.set('')
<_w.set('')
<_l.set('')
self.show_a.delete('1.0', 'end')
# 获取⽂件名
self.file_name = filedialog.askopenfilename()
self.name.set(self.file_name.split(r'/')[-1])
file = open(self.file_name, 'r', encoding='utf-8')
for line adlines():
class Order():
def base_orders(self, w_c, words):

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。