python學習筆記 模組

2021-09-04 13:16:08 字數 4591 閱讀 2915

pickle模組實現了基本的資料序列和反序列化。

通過pickle模組的序列化操作我們能夠將程式中執行的物件資訊儲存到檔案中去,永久儲存。

通過pickle模組的反序列化操作,我們能夠從檔案中建立上一次程式儲存的物件。

基本介面:pickle.dump(obj, file, [,protocol])

讀取方式開啟檔案:x = pickle.load(file)

import pickle

pkl_file = open('data.pkl', 'rb')

data1 = pickle.load(pkl_file) #使用pickle模組從檔案中重構python物件

pprint.pprint(data1)

import os

os.getcwd() # 返回當前的工作目錄

os.chdir('/server/accesslogs') # 修改當前的工作目錄

os.system('mkdir today') # 執行系統命令 mkdir

dir(os)

help(os)

#針對日常的檔案和目錄管理任務,shutil 模組提供了乙個易於使用的高階介面:

import shutil

shutil.copyfile('data.db', 'archive.db')

shutil.move('/build/executables', 'installdir')

#glob模組提供了乙個函式用於從目錄萬用字元搜尋中生成檔案列表

import glob

glob.glob('*.py')

通用工具指令碼經常呼叫命令列引數。這些命令列引數以鍊錶形式儲存於 sys 模組的 argv 變數。

import sys

print(sys.argv)

re模組為高階字串處理提供了正規表示式工具。

re.match函式:從字串的起始位置匹配乙個模式,起始位置匹配成功的話,match()就返回none

re.search方法:掃瞄整個字串並返回第乙個成功的匹配

re.sub:替換字串中的匹配項

re.compile:編譯正規表示式,生成乙個正規表示式( pattern )物件,供 match() 和 search() 這兩個函式使用。

findall(string[, pos[, endpos]]):查詢所以匹配項,返回乙個列表。字串:匹配長度

re.finditer:匹配的所有子串,並返回乙個迭代器。

re.split:按照能夠匹配的子串將字串分割後返回列表

in [2]: import re

in [3]: re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')

out[3]: ['foot', 'fell', 'fastest']

in [47]: print(re.match('www', 'www.runoob.com'))

in [48]: print(re.match('com', 'www.runoob.com'))

none

>>>import re

>>> pattern = re.compile(r'([a-z]+) ([a-z]+)', re.i) # re.i 表示忽略大小寫

>>> m = pattern.match('hello world wide web')

>>> print m # 匹配成功,返回乙個 match 物件

<_sre.sre_match object at 0x10bea83e8>

>>> m.group(0) # 返回匹配成功的整個子串

'hello world'

>>> m.span(0) # 返回匹配成功的整個子串的索引

(0, 11)

>>> m.group(1) # 返回第乙個分組匹配成功的子串

'hello'

>>> m.span(1) # 返回第乙個分組匹配成功的子串的索引

(0, 5)

>>> m.group(2) # 返回第二個分組匹配成功的子串

'world'

>>> m.span(2) # 返回第二個分組匹配成功的子串

(6, 11)

>>> m.groups() # 等價於 (m.group(1), m.group(2), ...)

('hello', 'world')

import random

out[7]: 'banana'

in [6]: random.sample(range(100), 10)

out[6]: [78, 62, 92, 85, 56, 29, 99, 48, 38, 69]

random.random() # 0-1 不含1隨機生成浮點數

random.randrange(6) # 0-5範圍內隨機生成整數

最簡單的兩個是用於處理從 urls 接收的資料的 urllib.request 以及用於傳送電子郵件的 smtplib

# weekday() 0-6表示周一-週日

in [8]: import datetime

in [9]: now = datetime.date.today()

in [10]: now

out[10]: datetime.date(2018, 12, 24)

in [11]: print(now)

2018-12-24

in [12]: oneday=datetime.timedelta(days=1) # print(oneday) =1 day, 0:00:00

in [13]: yesterday = now -oneday

in [14]: yesterday

out[14]: datetime.date(2018, 12, 23)

in [20]: monday = yesterday + datetime.timedelta(-yesterday.weekday()) #周一

in [21]: monday

out[21]: datetime.date(2018, 12, 17)

in [24]: mondaystr = monday.strftime('%y-%m-%d') #型別改為字串

in [25]: mondaystr

out[25]: '2018-12-17'

in [27]: week = yesterday.strftime("%y-%w") #本年度第幾周

in [28]: week

out[28]: '2018-51'

直接支援通用的資料打包和壓縮格式:zlib,gzip,bz2,zipfile,以及 tarfile

in [32]: import zlib

in [33]: s = b'witch which has which witches wrist watch'

in [34]: len(s)

out[34]: 41

in [35]: t = zlib.compress(s)

in [36]: len(t)

out[36]: 37

in [37]: zlib.decompress(t)

out[37]: b'witch which has which witches wrist watch'

# 比較兩種方法實現a、b值互換花費的時間

in [39]: from timeit import timer

in [40]: timer('t=a; a=b; b=t', 'a=1; b=2').timeit()

out[40]: 0.030674659999931464

in [41]: timer('a,b = b,a', 'a=1; b=2').timeit()

out[41]: 0.026684544998715864

doctest、unittest

in [44]: import calendar

in [45]: print(calendar.month(2018,12))

december 2018

mo tu we th fr sa su

1 2

3 4 5 6 7 8 9

10 11 12 13 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

31

Python學習筆記 模組

模組,用一砣 實現了某個功能的 集合。類似於函式式程式設計和面向過程程式設計,函式式程式設計則完成乙個功能,其他 用來呼叫即可,提供了 的重用性和 間的耦合。而對於乙個複雜的功能來,可能需要多個函式才能完成 函式又可以在不同的.py檔案中 n個 py 檔案組成的 集合就稱為模組。如 os 是系統相關...

Python學習筆記 模組

1.為了編寫可維護的 我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的 就相對較少,很多程式語言都採用這種組織 的方式。在python中,乙個.py檔案就稱之為乙個模組 module 為了避免模組名衝突,python又引入了按目錄來組織模組的方法,稱為包 package 每個包目錄下面...

Python學習筆記 模組

當 越來越多的時候,將 放入乙個py檔案難以維護,所以我們將 分拆放入多個py檔案,可以使不同py檔案中同一名字的變數或函式互不影響。我們可以把函式看成一塊積木,模組就是一盒主題積木,通過它可以拼出某一主題的東西。在python中,乙個py檔案就成為乙個模組,通常情況下,我們把實現某一特定功能的 放...