天天看點

第九節:python pickle序列化、裝飾器、子產品

python個人筆記,純屬友善查詢

<code>中間退出的時候要儲存,然後再次進入的時候還是退出的那個點。</code>

<code>字典</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>字元串(硬碟)</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>字典</code>

<code>pickle文法dump:把字典寫入硬碟檔案中:</code>

<code>import</code> <code>pickle</code>

<code>account_info </code><code>=</code> <code>{</code>

<code>'a'</code><code>:</code><code>'bbbbbbbbb'</code><code>,</code>

<code>'b'</code><code>:</code><code>'ccccccccc'</code>

<code>}</code>

<code>f</code><code>=</code><code>file</code><code>(</code><code>'account.pki'</code><code>,</code><code>'wb'</code><code>)  </code><code>#定義一個二進制檔案,隻有字元串才能寫入硬碟,</code>

<code>#是以字典要先轉換為字元串。</code>

<code>pickle.dump(account_info,f)</code>

<code>f.close()</code>

<code>從硬碟中讀取檔案變成字典:</code>

<code>pki_file</code><code>=</code><code>open</code><code>(</code><code>'account.pki'</code><code>,</code><code>'rb'</code><code>)   </code><code>#以讀的方式打開一個檔案。</code>

<code>account_list</code><code>=</code><code>pickle.load(pki_file)    </code><code>#把檔案序列化,以原來的格式讀取</code>

<code>pki_file.close()</code>

<code> </code> 

<code>如果不寫到檔案,而是通過socket發送消息:</code>

<code>a</code><code>=</code> <code>{</code>

<code>b</code><code>=</code><code>pickle.dumps(a)</code>

<code>c</code><code>=</code><code>pickle.loads(b)</code>

<code>pickle正規表達式:</code>

<code>import</code> <code>re</code>

<code>p</code><code>=</code><code>re.</code><code>compile</code><code>(</code><code>'hello'</code><code>)  </code><code>#比對hello</code>

<code>str_a</code><code>=</code> <code>'hello,my nam is darren'</code>

<code>p.match(str_a)</code>

<code>m</code><code>=</code><code>p.match(str_a)</code>

<code>m.group()   </code><code>#看傳回值,如果是none則沒有比對</code>

<code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code>

<code>p</code><code>=</code><code>re.</code><code>compile</code><code>(</code><code>'my'</code><code>)</code>

<code>p.serach(str_a)     </code><code>#比對整行</code>

<code>if</code> <code>m </code><code>is</code> <code>not</code> <code>none:</code><code>print</code> <code>"mactched"</code>

<code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code>

<code>m</code><code>=</code><code>re.search(</code><code>'my'</code><code>,str_a)   </code>

<code>m.group()</code>

<code>re.search(</code><code>'my'</code><code>,str_a).group()    </code><code>#一行搞定</code>

<code>模糊查詢:</code>

<code>print</code> <code>re.findall(</code><code>'\s+'</code><code>, str_a)    </code><code>#\s+比對空格的</code>

<code>print</code> <code>re.findall(</code><code>'\S+'</code><code>, str_a)    </code><code>#\S+比對去掉空格的</code>

<code>print</code> <code>re.findall(</code><code>'\d+'</code><code>, str_a)    </code><code>#\d+比對數字的</code>

<code>print</code> <code>re.findall(</code><code>'\D+'</code><code>, str_a)    </code><code>#\D+比對去掉數字的</code>

<code>print</code> <code>re.split(</code><code>'\d+'</code><code>, str_a)      </code><code>#比對到的做為分隔符</code>

<code>print</code> <code>re.split(</code><code>'b'</code><code>, str_a)        </code><code>#以b做為分隔符。</code>

<code>print</code> <code>re.split(</code><code>'\\\\'</code><code>, str_a)     </code><code>#前面兩個為轉義,後面兩個以\\為分隔符</code>

<code>print</code> <code>re.split(re.escape(</code><code>'\\'</code><code>), str_a)  </code><code>#和上面一樣</code>

<code>re.sub(</code><code>'\d+'</code><code>,</code><code>'|'</code><code>,a)  </code><code>#把a中的空格替換為|。</code>

<code>re.sub(</code><code>'\d+'</code><code>,</code><code>'|'</code><code>,a,</code><code>1</code><code>)  </code><code>#把a中的空格替換為|,隻比對一個</code>

<code>.   </code><code>#比對任意一個字元</code>

<code>.</code><code>+</code>  <code>#比對任意一個或多個字元</code>

<code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>python子產品</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code>

<code>如果導入一個目錄:例如day3,這時就需要在day3目錄下建一個空檔案。</code>

<code>cd day3</code>

<code>touch __init__.py</code>

<code>導入一個互動的配置檔案,需要先把交換的腳本改成一個函數:</code>

<code>def</code> <code>sayhi ():</code>

<code>if</code> <code>dayhi </code><code>=</code><code>=</code><code>main()</code>

<code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>python</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code>

<code>裝飾器:</code>

<code>檢視sayhi()執行花費的時間:</code>

<code>import</code> <code>time</code>

<code>def</code> <code>sayhi():</code>

<code>    </code><code>start</code><code>=</code><code>time.time()</code>

<code>    </code><code>print</code> <code>'hi,your sister.....'</code>

<code>    </code><code>time.sleep(</code><code>0.5</code><code>) </code>

<code>    </code><code>end</code><code>=</code><code>time.time()</code>

<code>    </code><code>print</code> <code>'this function costs :'</code><code>,end </code><code>-</code> <code>start</code>

<code>sayhi()</code>

<code>如果計算一百個函數花費的時間:</code>

<code>def</code> <code>time_counter(func):</code>

<code>    </code><code>def</code> <code>wrapper():    </code>

<code>        </code><code>start</code><code>=</code><code>time.time()</code>

<code>        </code><code>func() </code>

<code>        </code><code>end</code><code>=</code><code>time.time()</code>

<code>        </code><code>print</code> <code>'this function costs :'</code><code>,end </code><code>-</code> <code>start</code>

<code>    </code><code>return</code> <code>wrapper </code>

<code>@time_counter</code> 

<code>def</code> <code>sayhi():    </code>

<code>@time_counter</code>

<code>def</code> <code>salary():</code>

<code>    </code><code>print</code> <code>'your salary:'</code>

<code>sayhi() </code>

<code>salary()</code>

本文轉自 王家東哥 51CTO部落格,原文連結:http://blog.51cto.com/xiaodongge/1877785