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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

項目要求

wc.exe 是一個常見的工具,它能統計文本文件的字符數、單詞數和行數。這個項目要求寫一個命令行程序,模仿已有wc.exe 的功能,并加以擴充,給出某程序設計語言源文件的字符數、單詞數和行數。

實現一個統計程序,它能正確統計程序文件中的字符數、單詞數、行數,以及還具備其他擴展功能,并能夠快速地處理多個文件。

基本功能列表

wordCounter.exe -c file.c //返回文件 file.c 的字符數

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

wordCounter.exe -l file.c //返回文件 file.c 的行數

擴展功能

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

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

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

代碼行:本行包括多于一個字符的代碼。

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

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

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

3. -x 參數。這個參數單獨使用。如果命令行有這個參數,則程序會顯示圖形界面,用戶可以通過界面選取單個文件,程序就會顯示文件的字符數、行數等全部統計信息。

一、開發前PSP表格預估

PSP2.1

Personal Software Process Stages

預估耗時(分鐘)

實際耗時(分鐘)

Planning

計劃

40

30

· Estimate

· 估計這個任務需要多少時間

630

750

Development

開發

400

600

· Analysis

· 需求分析 (包括學習新技術)

20

30

· Design Spec

· 生成設計文檔

30

30

· Design Review

· 設計復審 (和同事審核設計文檔)

20

30

· Coding Standard

· 代碼規范 (為目前的開發制定合適的規范)

10

20

· Design

· 具體設計

30

60

· Coding

· 具體編碼

240

300

· Code Review

· 代碼復審

40

60

· Test

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

50

40

Reporting

報告

60

60

· Test Report

· 測試報告

30

40

· Size Measurement

· 計算工作量

30

20

· Postmortem & Process Improvement Plan

· 事后總結, 并提出過程改進計劃

30

30

合計

630

750

二、項目完成情況

編程語言:python

基本功能列表:

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

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

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

擴展功能:

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

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

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

代碼行:本行包括多于一個字符的代碼。

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

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

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

3. -x 參數。這個參數單獨使用。如果命令行有這個參數,則程序會顯示圖形界面,用戶可以通過界面選取單個文件,程序就會顯示文件的字符數、行數等全部統計信息。(未實現)

三、項目設計

項目大致流程圖:

四、關鍵代碼

RecurveDir 函數查找文件夾下符合條件的文件,使用`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

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

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

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

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

#多行注釋已經開始

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

isComment=False

commentLines+= index -startComment + 1

else:pass

五、測試

運行 python wordCounter.py -h

分別運行

python wordCount.py -c wordtest.txt

python wordCount.py-w wordtest.txt

python wordCounr.py-l wordtest.txt

結果:

運行:

python wordCount.py -s wordtest

python wordCount.py-a wordtest

python wordCount.py-a wordtest.txt

結果:

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。