天天看点

第九节: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