個人編程練習
一、程序分析
1、讀取文件到緩沖區
def process_file(dst): # 讀文件到緩沖區
try: # 打開文件
f = open(dst,‘r‘)
except IOError,s:
print s
return None
try: # 讀文件到緩沖區
bvffer = f.read()
except:
print "Read File Error!"
return None
f.close()
return bvffer
2、緩沖區字符串分割成帶有詞頻的字典
def process_buffer(bvffer):
if bvffer:
word_freq = {}
# 下面添加處理緩沖區 bvffer代碼,統計每個單詞的頻率,存放在字典word_freq
bvffer.lower()
char={"~@#$%^&*()_-+=<>?/,.:;{}[]|\‘“”"}
for ch in char :
bvffer=bvffer.replace(ch,‘ ‘)
words=bvffer.strip().split()
for word in words:
word_freq[word]=word_freq.get(word,0) + 1
return word_freq
3、將字典按詞頻排序並輸出排名前十的鍵值對
def output_result(word_freq):
if word_freq:
sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)
for item in sorted_word_freq[:10]: # 輸出 Top 10 的單詞
print item
4、主程序輸出前十結果和分析結果
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(‘dst‘)
args = parser.parse_args()
dst = args.dst
bvffer = process_file(dst)
word_freq = process_buffer(bvffer)
output_result(word_freq)
二、代碼風格說明
1.使用 4 個空格的縮進
2.使用空行分隔函數和類,以及函數內的大塊代碼
3.運算符周圍和逗號後面使用空格,但是括號裏側不加空格
4.折行以確保其不會超過 79 個字符
三、程序運行結果截圖
四、性能分析及改進
1、性能分析
1.1、模塊耗用時間可視化操作
- 需要安裝:graphviz , "pip install graphviz"; 參考使用cProfile分析Python程序性能:鏈接
-
下載轉換 dot 的 python 代碼gprof2dot 官方下載,解壓縮,將『gprof2dot.py』 copy 到當前分析文件的路徑,或者你系統 PATH 環境變量設置過的路徑。
- 執行轉換步驟
轉換圖如下:
個人編程練習