其實這個面向過程編寫程式,是編寫程式的基礎,所以一定要好好掌握
此程式涉及知識點:裝飾器,生成器,協程器應用
1#2import
os3 distinct = #
定義乙個列表用於判斷重複的檔案
4def autonext(target): #
生成器的next裝飾器
5def nexttarget(*args):
6 res = target(*args) #
res得到target(*args)的執行結果(target())
7 next(res)#
讓res進行一次next到yield的操作
8return res#
返回res當前的狀態(next到yield的狀態)
9return
nexttarget
1011 @autonext#
呼叫生成器的next裝飾器
12def
inputgetpath(target):
13 inputpath = yield
#inputpath等待yield的返回值
14 pathgen = os.walk(inputpath)#
將inputpath中的目錄子目錄和檔案遊走後返回列表[路徑,[子目錄],[檔案]]
15for i in
pathgen:
16for j in i[-1]:
17 filepath ="
%s\\%s
"%(i[0],j) #
將格式化好的路徑傳遞給filepath
18 target.send(filepath) #
使用send方式傳值給target中的yield
1920
@autonext
21def
openfile(target):
22while
true:
23 f = yield
#f等待yild的返回值,這裡是由inputpath()中的target.send傳遞過來的
24 with open(f) as f:#
將f路徑的檔案開啟賦值給f
25 target.send((f,f))#
由於最後要顯示檔案路徑所以,這裡要以元組的方式傳遞兩個值給下乙個target中的yield,f是檔案控制代碼,f是檔案路徑26#
("asdfasdf","f:\\a\\a.txt")
27@autonext
28def
catfile(target):
29while
true:
30 f,f = yield
#上方的openfile已經將f和f值傳遞到了這裡的yield並返回給f,f,既然openfile傳遞了兩個值,這裡也要用兩個值接收31#
f="asdfasdf",f="f:\\a\\a.txt"
32for i in
f :33 target.send((i,f))#
與openfile中的send一樣,將i的值和f的值傳遞給下乙個target中的yield
3435
@autonext
36def grepline(target,chioce):#
chioce是使用者輸入的即將檢索的關鍵字
37while
true:
38 line,f = yield
#同樣還是要用兩個引數來接收yield的返回值
39if (chioce in
line):
40 target.send(f) #
這裡就不需要傳遞兩個值了,因為最後的target只需要的到檔案路徑就可以了
4142
@autonext
43def
printinfo():
44while
true:
45 f = yield
46if(f not
in distinct): #
當f這個路徑值不存在distinct中時將f追加到distinct列表中
4748
(f)49
50 chioce = input("
請輸入你要檢索的關鍵字:")
51#這裡的呼叫其實,不難,仔細分析一下就能很容易的理解了
52 gene =inputgetpath(openfile(catfile(grepline(printinfo(),chioce))))
53try: #
針對stop告警的異常處理
54 gene.send("
f:\\a")
55except
stopiteration:
56print("
檢索完成
")
Python面向過程程式設計
目錄 面向過程 procedure oriented 是一種以過程為中心的程式設計思想。這些都是以什麼正在發生為主要目標進行程式設計,不同於物件導向的是誰在受影響。與物件導向明顯的不同就是封裝 繼承 類。在python中就一句花,可以流水線的程式設計,呼叫返回值 面向過程其實是最為實際的一種思考方式...
python物件導向程式設計練習
father.py 檔案 模組 coding utf 8 defhi i 5print haha return i class father object def init self print hi def del self print 類的銷毀 def dim self b dim print ...
python 面向過程程式設計與物件導向程式設計
面向過程 核心就是過程二字,過程指的是解決問題的步驟,設計一條流水線,機械式的思維方式.優點 複雜的問題流程化,進而簡單化.缺點 可擴充套件性差.物件導向 核心就是物件二字.物件就是特徵與技能的結合.上帝視角.優點 可擴充套件性強,缺點 程式設計複雜度高.應用場景 使用者需求經常變化,網際網路應用,...