日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

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

生活随笔

當(dāng)前位置: 首頁(yè) >

python用一行代码编写一个回声程序_利用Python实现一个WC程序

發(fā)布時(shí)間:2024/9/19 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python用一行代码编写一个回声程序_利用Python实现一个WC程序 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

項(xiàng)目要求

wc.exe 是一個(gè)常見(jiàn)的工具,它能統(tǒng)計(jì)文本文件的字符數(shù)、單詞數(shù)和行數(shù)。這個(gè)項(xiàng)目要求寫一個(gè)命令行程序,模仿已有wc.exe 的功能,并加以擴(kuò)充,給出某程序設(shè)計(jì)語(yǔ)言源文件的字符數(shù)、單詞數(shù)和行數(shù)。

實(shí)現(xiàn)一個(gè)統(tǒng)計(jì)程序,它能正確統(tǒng)計(jì)程序文件中的字符數(shù)、單詞數(shù)、行數(shù),以及還具備其他擴(kuò)展功能,并能夠快速地處理多個(gè)文件。

基本功能列表

wordCounter.exe -c file.c //返回文件 file.c 的字符數(shù)

wordCounter.exe -w file.c //返回文件 file.c 的詞的數(shù)目

wordCounter.exe -l file.c //返回文件 file.c 的行數(shù)

擴(kuò)展功能

wordCounter.exe -s file //遞歸處理目錄下符合條件的文件。

wordCounter.exe -a file.c //返回更復(fù)雜的數(shù)據(jù)(代碼行 / 空行 / 注釋行)。

空行: 本行全部是空格或格式控制字符,如果包括代碼,則只有不超過(guò)一個(gè)可顯示的字符,例如`“{”`。

代碼行:本行包括多于一個(gè)字符的代碼。

注釋行: 本行不是代碼行,并且本行包括注釋。一個(gè)有趣的例子是有些程序員會(huì)在單字符后面加注釋:

`} // 注釋`,在這種情況下,這一行屬于注釋行。

fileName: 文件或目錄名,可以處理一般通配符

3. -x 參數(shù)。這個(gè)參數(shù)單獨(dú)使用。如果命令行有這個(gè)參數(shù),則程序會(huì)顯示圖形界面,用戶可以通過(guò)界面選取單個(gè)文件,程序就會(huì)顯示文件的字符數(shù)、行數(shù)等全部統(tǒng)計(jì)信息。

一、開(kāi)發(fā)前PSP表格預(yù)估

PSP2.1

Personal Software Process Stages

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

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

Planning

計(jì)劃

40

30

· Estimate

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

630

750

Development

開(kāi)發(fā)

400

600

· Analysis

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

20

30

· Design Spec

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

30

30

· Design Review

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

20

30

· Coding Standard

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

10

20

· Design

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

30

60

· Coding

· 具體編碼

240

300

· Code Review

· 代碼復(fù)審

40

60

· Test

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

50

40

Reporting

報(bào)告

60

60

· Test Report

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

30

40

· Size Measurement

· 計(jì)算工作量

30

20

· Postmortem & Process Improvement Plan

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

30

30

合計(jì)

630

750

二、項(xiàng)目完成情況

編程語(yǔ)言:python

基本功能列表:

wordCounter.exe -c file.c //返回文件 file.c 的字符數(shù)(實(shí)現(xiàn))

wordCounter.exe -w file.c //返回文件 file.c 的詞的數(shù)目 (實(shí)現(xiàn))

wordCounter.exe -l file.c //返回文件 file.c 的行數(shù)(實(shí)現(xiàn))

擴(kuò)展功能:

wordCounter.exe -s file //遞歸處理目錄下符合條件的文件。(實(shí)現(xiàn))

wordCounter.exe -a file.c //返回更復(fù)雜的數(shù)據(jù)(代碼行 / 空行 / 注釋行)。(實(shí)現(xiàn))

空行: 本行全部是空格或格式控制字符,如果包括代碼,則只有不超過(guò)一個(gè)可顯示的字符,例如`“{”`。

代碼行:本行包括多于一個(gè)字符的代碼。

注釋行: 本行不是代碼行,并且本行包括注釋。一個(gè)有趣的例子是有些程序員會(huì)在單字符后面加注釋:

`} // 注釋`,在這種情況下,這一行屬于注釋行。

fileName: 文件或目錄名,可以處理一般通配符

3. -x 參數(shù)。這個(gè)參數(shù)單獨(dú)使用。如果命令行有這個(gè)參數(shù),則程序會(huì)顯示圖形界面,用戶可以通過(guò)界面選取單個(gè)文件,程序就會(huì)顯示文件的字符數(shù)、行數(shù)等全部統(tǒng)計(jì)信息。(未實(shí)現(xiàn))

三、項(xiàng)目設(shè)計(jì)

項(xiàng)目大致流程圖:

四、關(guān)鍵代碼

RecurveDir 函數(shù)查找文件夾下符合條件的文件,使用`glob`類匹配輸入的文件夾下的文件存在列表中,然后遍歷文件列表,從中遞歸查找符合條件的文件。

defRecurveDir(dirPath):"""遞歸查找符合條件的文件

:param:

dirPath: 目錄的路徑

:return: 符合條件的文件"""fileList=[]

pathFileInfo= "*.*"pathList= glob.glob(os.path.join(dirPath, '*'))for mPath inpathList:iffnmatch.fnmatch(mPath, pathFileInfo):

fileList.append(mPath)#print(fileList)

elifos.path.isdir(mPath):#print(mPath)

fileList +=RecurveDir(mPath)else:pass

return fileList

下面這段是統(tǒng)計(jì)代碼行,空行,注釋行的邏輯代碼,需要考慮的情況挺多,有單行注釋和多行注釋等

with open(fileName, 'r', encoding = 'utf-8') as f:for index, line in enumerate(f, start=1):

stripLine=line.strip()#判斷多行注釋是否開(kāi)始

if notisComment:if stripLine.startswith("'''") or stripLine.startswith('"""') or stripLine.startswith('/*'):

isComment=True

startComment=index#單行注釋,考慮多種情況

elif stripLine.startswith('#') or stripLine.startswith('//') or re.findall('^[}]+[\s\S]+[//]+', stripLine):

commentLines+= 1

elif stripLine == '' or stripLine == '{' or stripLine == '}':

blankLines+= 1

else:

codeLines+= 1

#多行注釋已經(jīng)開(kāi)始

else:if stripLine.endswith("'''") or stripLine.endswith('"""') or stripLine.endswith('*/'):

isComment=False

commentLines+= index -startComment + 1

else:pass

五、測(cè)試

運(yùn)行 python wordCounter.py -h

分別運(yùn)行

python wordCount.py -c wordtest.txt

python wordCount.py-w wordtest.txt

python wordCounr.py-l wordtest.txt

結(jié)果:

運(yùn)行:

python wordCount.py -s wordtest

python wordCount.py-a wordtest

python wordCount.py-a wordtest.txt

結(jié)果:

總結(jié)

以上是生活随笔為你收集整理的python用一行代码编写一个回声程序_利用Python实现一个WC程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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