python实现什么功能_Python 实现WC功能
項目要求
基本要求
-c 統(tǒng)計文件字符數(shù) (實現(xiàn))
-w 統(tǒng)計文件詞數(shù) (實現(xiàn))
-l 統(tǒng)計文件行數(shù)(實現(xiàn))
擴展功能
-s 遞歸處理目錄下符合條件得文件(實現(xiàn))
-a 返回文件代碼行 / 空行 / 注釋行(實現(xiàn))
高級功能
-x 圖形化界面(未實現(xiàn))
解題思路
實現(xiàn)對文本的統(tǒng)計
讀取文件
使用正則表達式處理文本內(nèi)容
再實現(xiàn)拓展功能更復(fù)雜的統(tǒng)計及批量操作
用os模塊獲取文件以及判斷是文件或目錄
遍歷目錄下所有符合的文件
最后實現(xiàn)命令參數(shù)解析
用sys模塊實現(xiàn)在命令行解析參數(shù)
設(shè)計
將各個功能放在不同文件中
主文件及相應(yīng)模塊
WC.py:
recursive(list) (遍歷文件)
wc(f, arg) (實現(xiàn)命令參數(shù)解析)
統(tǒng)計字符文件及模塊
strCount.py:
str_count(name)
統(tǒng)計行數(shù)文件及模塊:
lineCount.py:
line_count(name)
統(tǒng)計單詞文件及模塊:
wordsCount.py:
words_count(name)
統(tǒng)計代碼行/空行/注釋行文件及模塊:
codeCount.py:
code_count(name)
流程圖
代碼說明
1. 遍歷文件
defrecursive(list):
f_list=os.listdir(list)return f_list
2. 統(tǒng)計字符數(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)計行數(shù)
defline_count(name):
with open(name,'r', encoding='UTF-8') as f:
n=0for line inf:
n+= 1
return n
4. 統(tǒng)計單詞數(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)計空行/代碼行/注釋行數(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)
測試運行
由于事先設(shè)置了工作路徑所以默認路徑與代碼所在路徑不同
基本模塊測試
擴展模塊測試
遞歸遍歷文件夾下文件測試
文件名出錯時
代碼覆蓋率
PSP
PSP2.1
Personal Software Process Stages
預(yù)估耗時(分鐘)
實際耗時(分鐘)
Planning
計劃
60
60
· Estimate
· 估計這個任務(wù)需要多少時間
60
60
Development
開發(fā)
300
360
· Analysis
· 需求分析(包括學(xué)習(xí)新技術(shù))
60
100
· Design Spec
· 生成設(shè)計文檔
30
30
· Design Review
· 設(shè)計復(fù)審(和同事審核設(shè)計文檔)
20
30
· Coding Standard
· 代碼規(guī)范(為目前的開發(fā)制定合適的規(guī)范)
30
20
· Design
· 具體設(shè)計
30
30
· Coding
· 具體編碼
240
300
· Code Review
· 代碼復(fù)審
30
40
· Test
· 測試(自我測試,修改代碼,提交修改)
60
60
Reporting
報告
20
30
· Test Report
· 測試報告
60
60
· Size Measurement
· 計算工作量
20
20
· Postmortem & Process Improvement Plan
· 事后總結(jié),并提出過程改進計劃
20
30
合計
1040
1220
項目總結(jié)
以前寫代碼從沒考慮過這么多,總是思考一陣之后便直接上手,遇到什么問題就查書查網(wǎng)上資料解決,突然想改就把之前寫的模塊推翻重來,因此也做了不少無用功,而且也很少總結(jié),現(xiàn)在這樣雖然工作量多了但是卻感覺比以前開發(fā)要更快,少走了不少彎路,而且有寫了博客后也感覺比之前掌握的更加扎實。
總結(jié)
以上是生活随笔為你收集整理的python实现什么功能_Python 实现WC功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android camera2 采集,视
- 下一篇: 服务器搭建php mysql5_Wind