日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python实现什么功能_Python 实现WC功能

發(fā)布時(shí)間:2024/7/23 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现什么功能_Python 实现WC功能 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

項(xiàng)目要求

基本要求

-c 統(tǒng)計(jì)文件字符數(shù) (實(shí)現(xiàn))

-w 統(tǒng)計(jì)文件詞數(shù) (實(shí)現(xiàn))

-l 統(tǒng)計(jì)文件行數(shù)(實(shí)現(xiàn))

擴(kuò)展功能

-s 遞歸處理目錄下符合條件得文件(實(shí)現(xiàn))

-a 返回文件代碼行 / 空行 / 注釋行(實(shí)現(xiàn))

高級(jí)功能

-x 圖形化界面(未實(shí)現(xiàn))

解題思路

實(shí)現(xiàn)對(duì)文本的統(tǒng)計(jì)

讀取文件

使用正則表達(dá)式處理文本內(nèi)容

再實(shí)現(xiàn)拓展功能更復(fù)雜的統(tǒng)計(jì)及批量操作

用os模塊獲取文件以及判斷是文件或目錄

遍歷目錄下所有符合的文件

最后實(shí)現(xiàn)命令參數(shù)解析

用sys模塊實(shí)現(xiàn)在命令行解析參數(shù)

設(shè)計(jì)

將各個(gè)功能放在不同文件中

主文件及相應(yīng)模塊

WC.py:

recursive(list) (遍歷文件)

wc(f, arg) (實(shí)現(xiàn)命令參數(shù)解析)

統(tǒng)計(jì)字符文件及模塊

strCount.py:

str_count(name)

統(tǒng)計(jì)行數(shù)文件及模塊:

lineCount.py:

line_count(name)

統(tǒng)計(jì)單詞文件及模塊:

wordsCount.py:

words_count(name)

統(tǒng)計(jì)代碼行/空行/注釋行文件及模塊:

codeCount.py:

code_count(name)

流程圖

代碼說(shuō)明

1. 遍歷文件

defrecursive(list):

f_list=os.listdir(list)return f_list

2. 統(tǒng)計(jì)字符數(shù)

defstr_count(name):

with open(name,'r', encoding='UTF-8') as f:

n=0for line inf.readlines():

n+=len(line)return n

3. 統(tǒng)計(jì)行數(shù)

defline_count(name):

with open(name,'r', encoding='UTF-8') as f:

n=0for line inf:

n+= 1

return n

4. 統(tǒng)計(jì)單詞數(shù)

importredefwords_count(name):

with open(name,'r', encoding='UTF-8') as f:

n=0for line inf.readlines():

list_match= re.findall('[a-zA-Z]+', line.lower())

n+=len(list_match)return n

5. 統(tǒng)計(jì)空行/代碼行/注釋行數(shù)

defcode_count(name):

with open(name,'r', encoding='UTF-8') as f:

code_lines=0

comm_lines=0

space_lines=0for line inf.readlines():if line.strip().startswith('#'):

comm_lines+= 1

elif line.strip().startswith("'''") or line.strip().startswith('"""'):

comm_lines+= 1

elif line.count('"""') == 1 or line.count("'''") == 1:whileTrue:

line=f.readline()

comm_lines+= 1

if ("'''" in line) or ('"""' inline):break

elifline.strip():

code_lines+= 1

else:

space_lines+= 1

return code_lines, comm_lines, space_lines

6. 命令行邏輯

defwc(f, arg):if arg[1] == '-c':

str_num=str_count(f)print(f + "文件字符數(shù)為:", str_num)elif arg[1] == '-w':

word_num=words_count(f)print(f + "文件單詞數(shù)為:", word_num)elif arg[1] == '-l':

line_num=line_count(f)print(f + "文件行數(shù)為:", line_num)elif arg[1] == '-a':

code_lines_num, comm_lines_num, space_lines_num=code_count(f)print(f + "文件代碼行為:", code_lines_num)print("注釋行為:", comm_lines_num)print("空行為:", space_lines_num)

測(cè)試運(yùn)行

由于事先設(shè)置了工作路徑所以默認(rèn)路徑與代碼所在路徑不同

基本模塊測(cè)試

擴(kuò)展模塊測(cè)試

遞歸遍歷文件夾下文件測(cè)試

文件名出錯(cuò)時(shí)

代碼覆蓋率

PSP

PSP2.1

Personal Software Process Stages

預(yù)估耗時(shí)(分鐘)

實(shí)際耗時(shí)(分鐘)

Planning

計(jì)劃

60

60

· Estimate

· 估計(jì)這個(gè)任務(wù)需要多少時(shí)間

60

60

Development

開(kāi)發(fā)

300

360

· Analysis

· 需求分析(包括學(xué)習(xí)新技術(shù))

60

100

· Design Spec

· 生成設(shè)計(jì)文檔

30

30

· Design Review

· 設(shè)計(jì)復(fù)審(和同事審核設(shè)計(jì)文檔)

20

30

· Coding Standard

· 代碼規(guī)范(為目前的開(kāi)發(fā)制定合適的規(guī)范)

30

20

· Design

· 具體設(shè)計(jì)

30

30

· Coding

· 具體編碼

240

300

· Code Review

· 代碼復(fù)審

30

40

· Test

· 測(cè)試(自我測(cè)試,修改代碼,提交修改)

60

60

Reporting

報(bào)告

20

30

· Test Report

· 測(cè)試報(bào)告

60

60

· Size Measurement

· 計(jì)算工作量

20

20

· Postmortem & Process Improvement Plan

· 事后總結(jié),并提出過(guò)程改進(jìn)計(jì)劃

20

30

合計(jì)

1040

1220

項(xiàng)目總結(jié)

以前寫(xiě)代碼從沒(méi)考慮過(guò)這么多,總是思考一陣之后便直接上手,遇到什么問(wèn)題就查書(shū)查網(wǎng)上資料解決,突然想改就把之前寫(xiě)的模塊推翻重來(lái),因此也做了不少無(wú)用功,而且也很少總結(jié),現(xiàn)在這樣雖然工作量多了但是卻感覺(jué)比以前開(kāi)發(fā)要更快,少走了不少?gòu)澛?#xff0c;而且有寫(xiě)了博客后也感覺(jué)比之前掌握的更加扎實(shí)。

總結(jié)

以上是生活随笔為你收集整理的python实现什么功能_Python 实现WC功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。