一、檔案的使用
檔案處理分為三個步驟:
檔案的打開
對打開的檔案的操作
關閉檔案
原理流程圖:
1.1 檔案的打開
使用open方法
注:
檔案路徑和名稱:"D:/PYE/f.txt" 或 "D:\PYE\f.txt"
源檔案同目錄可省路徑:"./PYE/f.txt" 或 "f.txt"
1.2 檔案的操作
檔案的打開模式
描述
'r'
隻讀模式,預設值,如果檔案不存在,傳回FileNotFoundError
'w'
覆寫寫模式,檔案不存在則建立,存在則完全覆寫
'x'
建立寫模式,檔案不存在則建立,存在則傳回FileExistsError
'a'
追加寫模式,檔案不存在則建立,存在則在檔案最後追加内容
'b'
二進制檔案模式
't'
文本檔案模式,預設值
'+'
與r/w/x/a一同使用,在原功能基礎上增加同時讀寫功能
文本形式、隻讀模式、預設值:f = open("f.txt")
文本形式、隻讀模式、同預設值:f = open("f.txt", "rt")
文本形式、覆寫寫模式:f = open("f.txt", "w")
文本形式、追加寫模式+ 讀檔案:f = open("f.txt", "a+")
文本形式、建立寫模式:f = open("f.txt", "x")
二進制形式、隻讀模式:f = open("f.txt", "b")
二進制形式、覆寫寫模式:f = open("f.txt"):f = open("f.txt", "wb")
1.3 檔案的關閉
<變量名>.close() # 變量名為檔案句柄
1.4 檔案使用案例
# 檔案的讀取
f = open(r'F:\shpython11\pycharmwork\first_project\file\file.py','r')
data = f.read()
print(data)
f.close()
# 檔案的編輯(覆寫寫入,清空檔案後寫入)
fw = open(r'F:\shpython11\pycharmwork\first_project\file\file.py','w+')
fw.writelines(r'abc=new file')
f.close()
二、文本詞頻統計
文本詞頻統計
需求:一篇文章,出現了哪些詞?哪些詞出現得最多?
該怎麼做呢?
2.1 英文詞頻統計
程式代碼:
# 1.首先先打開要統計的檔案
f = open(r'F:\shpython11\pycharmwork\first_project\file\hamlet.txt','r',encoding='utf8')
# 把資料讀取出來并且講所有字元轉為小寫字母
data = f.read().lower()
# 用一個字元串接收所有 可能在文本中出現的 标點符号和其他字元
zf = r'!"#$%&()*+,-.'+"'"+r'/:;<=>?@[\\]^_‘{|}~'
# 去除文本中的多餘的字元和标點符号
for i in data:
if i in zf:
data = data.replace(i," ")
# 對讀取的内容進行切分成序列
data_split = data.split()
# 建立一個用來存儲的字典
data_dict = {}
# 循環序列将重複的單詞,計數後放入字典中
for i in data_split:
if i not in data_dict:
data_dict[i] = 1
else:
data_dict[i] += 1
# 将字典轉為序列 進行計數排序
list_data = list(data_dict.items())
# 定義一個取值函數
def find_values(i):
return i[1]
list_data.sort(key=find_values,reverse=True)
# 循環輸出出現次數最多的是個單詞
for i in list_data[:10]:
print(f'{i[0]:^9} {i[1]:^5}')
運作結果:
the 953
and 856
to 657
of 581
i 519
you 498
a 471
my 447
in 388
hamlet 366
2.2 中文詞頻的使用
程式代碼:
# # 中文詞頻統計
# 導入jieba庫
import jieba
# 建立一個字典 用來
data_dict = {}
excludes = {"将軍", "卻說", "荊州", "二人", "不可", "不能", "如此","商議","如何","丞相","主公",
"軍士","左右","軍馬","引兵","次日","大喜"}
f = open(r'F:\shpython11\pycharmwork\first_project\file\threekingdoms.txt','r',encoding='utf8')
data = jieba.lcut(f.read())
for word in data:
if len(word) == 1:
continue
if word in excludes:
continue
if '曰' in word:
word = word.replace('曰',"")
if word in data_dict:
data_dict[word] += 1
else:
data_dict[word] = 1
def find_values(i):
return i[1]
list_data = list(data_dict.items())
list_data.sort(key=find_values,reverse=True)
for i in list_data[:10]:
print(f'{i[0]:^8} {i[1]:^5}')
運作結果:
孔明 1226
玄德 975
曹操 953
關公 510
張飛 358
呂布 300
趙雲 278
劉備 277
雲長 265
孫權 264
三、詞雲的使用
3.1 基本分析
基本思路
步驟1:讀取檔案、分詞整理
步驟2:設定并輸出詞雲
步驟3:觀察結果,優化疊代
3.2 具體實作
執行個體:
### 制作詞雲
# 導入wordcloud雲庫子產品
import wordcloud
# 導入jieba子產品庫
import jieba
# 制作一個簡單的詞雲
# 要制作成雲庫的文本内容
txt = "劉夢是這個世界最漂亮的女孩沒有之一"
# 設定雲庫的背景顔色,字型,寬度,高度等
w = wordcloud.WordCloud(background_color="white",font_path=r"C:\Windows\Fonts\FZLTCXHJW.TTF",width=400,height=400)
# 将内容 放入雲庫中
w.generate(" ".join(jieba.lcut(txt)))
# 将制作好的雲詞導出來
w.to_file("test.png")
運作結果:
執行個體二:
# 導入wordcloud雲庫子產品
import wordcloud
# 導入jieba庫
import jieba
# # 詞雲進階
# 打開文本檔案
f = open(r'F:\shpython11\pycharmwork\first_project\file\threekingdoms.txt','r',encoding='utf8')
# 将文本内容放大 data 變量中 存儲為等下要制作的雲庫内容
data = " ".join(jieba.lcut(f.read()))
# 設定雲庫的背景顔色,字型,寬度,高度等
w = wordcloud.WordCloud(background_color="white",font_path=r"C:\Windows\Fonts\FZLTCXHJW.TTF",width=1000,height=800)
w.generate(data)
w.to_file("test2.png")
運作結果:
今天的課後練習執行個體題
總結
今天的上課學習的是python的檔案的使用、文本詞頻統計分析和詞雲的制作。python檔案的使用是一個比較重點的東西,因為以後程式設計是需要和檔案之間進行互動的,而掌握這個知識點,對我們的之後做項目等都非常有幫助。而文本詞頻統計,就是對之前學習的東西和檔案的一種結合使用的小案例,幫助我們更深的去了解和學習python的具體知識點。而詞雲就是一個比較好玩的東西,用來做一些自己感興趣的東西也是非常不錯的呢。