1. 程式人生 > >five day --模塊

five day --模塊

linux 在線 改變 utc 一個表 PE isa 開始 dal

常用模塊(記憶力)
re模塊
collections模塊
時間模塊
random模塊 隨機數、打亂順序
os模塊 操作系統
sys模塊 python解釋器相關的模塊
引入:模塊 py文件  是寫好了,但不直接使用的功能
    內置模塊:安裝完python自帶的
    擴展模塊:jagal    爬蟲、自動化測試、AI,數據挖掘等   https://pypi.org/網址有所有模塊;或在論壇上查看
    自定義模塊:自己寫的模塊

一、collections模塊

collections:
    ordereddict 有序字典  重點!小例子
    counter計算出現的次數,無實際使用作用   了解即可
    defaultdict  默認這個字典的value是一個空列表  隨便寫key不報錯  了解即可  小例子
    namedtuple 可命名元組   重要!!例子1. p=(x,y)  p.x  2.card  流暢的python!書籍
    deque 雙端隊列  不常用    insert  pop(n) 少寫

  

技術分享圖片
 1 # import collections
 2 # d = collections.OrderedDict()
 3 # print(d)
 4 #
 5 # d[電腦] = 10000
 6 # d[蘋果] = 10
 7 # print(d)
 8 # for i in d:
 9 #     print(i,d[i])
10 # print(d[電腦])
collections.OrderedDict 技術分享圖片
 1 # l= [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
 2 # my_dict = {}
 3 # for value in
l: 4 # if value>66: 5 # if my_dict.has_key(k1): 6 # my_dict[k1].append(value) 7 # else: 8 # my_dict[k1] = [value] 9 # else: 10 # if my_dict.has_key(k2): 11 # my_dict[k2].append(value) 12 # else: 13 # my_dict[
k2] = [value] 14 # import time 15 # time.sleep() 16 # from time import sleep 17 # sleep() 18 19 # from collections import defaultdict 20 # values = [11, 22, 33,44,55,66,77,88,99,90] 21 # my_dict = defaultdict(list) 22 # for value in values: 23 # if value>66: 24 # my_dict[k1].append(value) 25 # else: 26 # my_dict[k2].append(value) 27 # 默認這個字典的value是一個空列表 28 # d = {} 29 # print(my_dict) 30 # my_dict[a].append(1) 31 # my_dict[b].append(2) 32 # my_dict[c] = 10 33 # print(my_dict)
defaultdict 技術分享圖片
1 from collections import namedtuple
2 # Point = namedtuple(Point,[x,y])
3 # p = Point(1,2)
4 # print(p.x)
5 # print(p.y)
6 # Card = namedtuple(card,[rank,suit])
7 # c = Card(2,紅心)
8 # print(c.rank,c.suit)
namedtuple 技術分享圖片
 1 # from collections import deque
 2 # q = deque()
 3 # q.append(1)
 4 # q.append(2)
 5 # q.append(3)
 6 # q.append(3)
 7 # print(q)
 8 # print(q.pop())   
 9 # print(q)      
10 # q.appendleft(a)
11 # q.appendleft(b)
12 # q.appendleft(c)
13 # print(q)
14 # print(q.popleft())
15 # print(q.popleft())
16 
17 結果:
18 deque([1, 2, 3, 3])
19 3
20 deque([1, 2, 3])
21 deque([c, b, a, 1, 2, 3])
22 c
23 b
deque

二、time模塊

時間模塊:
    1.time.time()  時間戳時間 英國倫敦時間 1970 1 1 00:00:00
                                北京       1970 1 1 08:00:00
    2.格式化時間--用字符串表示的時間
    time.strftime(%Y-%m-%d  %H:%M:%S) 年月日時分秒   %x時間  %c日期+時間
    3.結構化時間--是時間戳(機器)轉化成格式化時間(人)的橋梁
    time.localtime()    可類似於namedtuple取值   夏令時:調節時間,現在不用
    轉化方式---圖
    思考:1.能否拿到當前時間的月初1號的0點的時間戳時間            ?格式化-結構化-時間戳
        2.計算時間差--任意兩個時間之間經歷了多少年月日時分秒     ??
    datetime 同time

小結:時間戳是計算機能夠識別的時間;時間字符串是人能夠看懂的時間;元組則是用來操作時間的

幾種格式之間的轉換

技術分享圖片

技術分享圖片
#時間戳-->結構化時間
#time.gmtime(時間戳)    #UTC時間,與英國倫敦當地時間一致
#time.localtime(時間戳) #當地時間。例如我們現在在北京執行這個方法:與UTC時間相差8小時,UTC時間+8小時 = 北京時間 
>>>time.gmtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
>>>time.localtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)

#結構化時間-->時間戳 
#time.mktime(結構化時間)
>>>time_tuple = time.localtime(1500000000)
>>>time.mktime(time_tuple)
1500000000.0
技術分享圖片 技術分享圖片
#結構化時間-->字符串時間
#time.strftime("格式定義","結構化時間")  結構化時間參數若不傳,則現實當前時間
>>>time.strftime("%Y-%m-%d %X")
‘2017-07-24 14:55:36‘
>>>time.strftime("%Y-%m-%d",time.localtime(1500000000))
‘2017-07-14‘

#字符串時間-->結構化時間
#time.strptime(時間字符串,字符串對應格式)
>>>time.strptime("2017-03-16","%Y-%m-%d")
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)
>>>time.strptime("07/24/2017","%m/%d/%Y")
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)
技術分享圖片

技術分享圖片

技術分享圖片
#結構化時間 --> %a %b %d %H:%M:%S %Y串
#time.asctime(結構化時間) 如果不傳參數,直接返回當前時間的格式化串
>>>time.asctime(time.localtime(1500000000))
‘Fri Jul 14 10:40:00 2017‘
>>>time.asctime()
‘Mon Jul 24 15:18:33 2017‘

#時間戳 --> %a %d %d %H:%M:%S %Y串
#time.ctime(時間戳)  如果不傳參數,直接返回當前時間的格式化串
>>>time.ctime()
‘Mon Jul 24 15:19:07 2017‘
>>>time.ctime(1500000000)
‘Fri Jul 14 10:40:00 2017‘ 
技術分享圖片

三、random模塊

random模塊    隨機數、打亂順序
    1.使用情景:發紅包    數學建模問題  ??自己考慮
    2.驗證碼:例子 數字 字母(65,90)A-Z (97-122)a-z  0-9數字
        某一位字母或數字也是隨機 random.choice()  註意強轉str  練習!!
技術分享圖片
 1 # import random
 2 # s = ‘‘
 3 # for i in range(4):
 4 #     s += str(random.randint(0,9))
 5 # print(s)
 6 
 7 # 數字 字母
 8 # print(chr(98))   # (65,90)A (97,122)a
 9 # import random
10 # num = random.randint(65,90)
11 # print(chr(num))
12 # num = random.randint(97,122)
13 # print(chr(num))
14 
15 # 某一位 到底是一個字母 還是一個數字的事兒也是隨機的
16 # import random
17 # id = ‘‘
18 # for i in range(6):
19 #     num = random.randint(65,90)
20 #     alpha1 = chr(num)
21 #     num = random.randint(97,122)
22 #     alpha2 = chr(num)
23 #     num3 = str(random.randint(0,9))
24 #     print(alpha1,alpha2,num3)
25 #     s = random.choice([alpha1,alpha2,num3])
26 #     id+=s
27 # print(id)
例子

四、sys模塊

sys模塊    python解釋器相關的模塊
    1.sys.path  重要!  作用:講模塊時詳細講
        一個模塊是否能夠被導入,全看在不在sys.path列表所包含的路徑下
        模塊名字不能亂起
    2.sys.argv 腳本執行   重要! 當前文件的文件路徑
    在執行python腳本的時候,可以傳遞一些參數進來   在命令行執行可 多傳參數 ![路徑 ,user ,name]
    mysql輸入例子
    3. sys.modules   了解  放了所有在解釋器運行的過程中導入的模塊名   作用:講模塊時講
    4.sys.exit()  了解 解釋器退出   程序結束
技術分享圖片
 1 import sys  # python解釋器
 2 # sys.exit()   # 解釋器退出 程序結束
 3 # print(**10)    #**********
 4 # print(sys.path)
 5 # 一個模塊是否能夠被導入 全看在不在sys.path列表所包含的路徑下
 6 # print(sys.modules)  # 放了所有在解釋器運行的過程中導入的模塊名
 7 
 8 # print(sys.argv)
 9 # if sys.argv[1] == alex and sys.argv[2] == alex3714:
10 #     print(可以執行下面的n行代碼)
11 # else:
12 #     sys.exit()
13 # 在執行python腳本的時候,可以傳遞一些參數進來
14 # mysql username password
View Code

五、os模塊

 1 os模塊     操作系統   運維比較常用
 2     1.代碼執行刪除不可恢復,慎重使用
 3     2.分類:和文件相關    和工作目錄相關 getcwd  表現操作系統差異的 os.pathsep 例子
 4     os.system  win gbk  pycharm utf-8  會有亂碼  #exec 執行字符串中代碼,無返回值  慎用
 5         加上.read()  不亂碼
 6         os.system("bash command")  運行shell命令,直接顯示
 7         os.popen("bash command).read()  運行shell命令,獲取執行結果
 8     path系列
 9         r 轉義  取消所有的轉義符的轉義
10         split===basename+dirname (目錄)
11         os.path.join 路徑的拼接  重要!
12         os.path.getsize(path) 返回path的大小 註: 文件大小的時候才有效 文件夾的大小4096
13             計算文件夾下所有文件的總大小:遞歸、堆棧思想    小例子 !面試題!!!

技術分享圖片

技術分享圖片
 1 os.getcwd() 獲取當前工作目錄,即當前python腳本工作的目錄路徑
 2 os.chdir("dirname")  改變當前腳本工作目錄;相當於shell下cd
 3 os.curdir  返回當前目錄: (.)
 4 os.pardir  獲取當前目錄的父目錄字符串名:(..)
 5 os.makedirs(dirname1/dirname2)    可生成多層遞歸目錄
 6 os.removedirs(dirname1)    若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,依此類推
 7 os.mkdir(dirname)    生成單級目錄;相當於shell中mkdir dirname
 8 os.rmdir(dirname)    刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當於shell中rmdir dirname
 9 os.listdir(dirname)    列出指定目錄下的所有文件和子目錄,包括隱藏文件,並以列表方式打印
10 os.remove()  刪除一個文件
11 os.rename("oldname","newname")  重命名文件/目錄
12 os.stat(path/filename)  獲取文件/目錄信息
13 os.sep    輸出操作系統特定的路徑分隔符,win下為"\\",Linux下為"/"
14 os.linesep    輸出當前平臺使用的行終止符,win下為"\t\n",Linux下為"\n"
15 os.pathsep    輸出用於分割文件路徑的字符串 win下為;,Linux下為:
16 os.name    輸出字符串指示當前使用平臺。win->nt; Linux->posix
17 os.system("bash command")  運行shell命令,直接顯示
18 os.popen("bash command).read()  運行shell命令,獲取執行結果
19 os.environ  獲取系統環境變量
20 
21 
22 os.path
23 os.path.abspath(path) 返回path規範化的絕對路徑 os.path.split(path) 將path分割成目錄和文件名二元組返回 os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第一個元素 os.path.basename(path) 返回path最後的文件名。如何path以/或\結尾,那麽就會返回空值。
24                         即os.path.split(path)的第二個元素
25 os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
26 os.path.isabs(path)  如果path是絕對路徑,返回True
27 os.path.isfile(path)  如果path是一個存在的文件,返回True。否則返回False
28 os.path.isdir(path)  如果path是一個存在的目錄,則返回True。否則返回False
29 os.path.join(path1[, path2[, ...]])  將多個路徑組合後返回,第一個絕對路徑之前的參數將被忽略
30 os.path.getatime(path)  返回path所指向的文件或者目錄的最後訪問時間
31 os.path.getmtime(path)  返回path所指向的文件或者目錄的最後修改時間
32 os.path.getsize(path) 返回path的大小
33 ‘‘‘
View Code

六、re模塊

 1 re模塊 非常重要!!!
 2     1.引入:手機號碼
 3     2.正則表達式:字符串匹配相關的操作的時候,用到的一種規則
 4         在線測試工具 http://tool.chinaz.com/regex/
 5         正則表達式規則
 6             字符組:一個字符組只代表一個字符  範圍:一個範圍段的是正序的
 7                 [0-9a-fA-F]   可以匹配數字,大小寫形式的a~f,用來驗證十六進制字符
 8             元字符:有一個表copy一下 ^ $非常重要  $字符串的最後 一個結果  | 匹配第一個就返回,不判斷第二個
 9             量詞:[1-9][0-9]{10}   一次,10次    *  +  ? {n}   {n,}   {n,m}
10                 特別原則:正則表達式中的所有量詞,都會盡量多的為你匹配    解釋:回溯算法
11                 例子:匹配整數和小數  \d+\.?\d*  1.\.轉義  2.每一個元字符後都可以接量詞
12         總結:。。。。
13         ?寫在量詞後面   惰性匹配
14             註:.*x  貪婪匹配 ,回溯算法    .*?x  惰性匹配,先檢測?後的字符  就是取前面任意長度的字符,直到一個x出現
15         轉義:測試工具寫好後,加r16 
17         分組:匹配整數和小數  \d+(\.\d+)?   1  2.2
18             身份證號:最後兩個寫法正確      書籍:正則指引
19         常用方法:。。
20             re.search()   與findall 匹配所有例子  內存地址 group
21                 search找第一個
22                 返回的值不是一個直接的結果,而是一個內存地址,需要使用.group()取值
23                 如果匹配不上,返回None,,就不能group了 if ret:print(ret.group())
24             match   在search基礎上 給每一條正則都加上了一個^25             。。
26             最後兩個 了解即可
27             註意:1.加?:  2.find不常用   看四個練習題
28 
29         正則表達式本身也和python沒有什麽關系,就是匹配字符串內容的一種規則。
30         使用python中的re模塊去操作正則表達式
# 元字符 對一個字符的匹配創建的一些規則
# 這些規則是在正則表達式中有著特殊意義的符號
# 如果要匹配的字符剛好是和元字符一模一樣 那麽需要對這個元字符進行轉義

# 量詞 量詞跟在一個元字符的後面 約束某個字符的規則能夠重復多少次

# 正則表達式默認 貪婪匹配 會在當前量詞約束的範圍內匹配最多的次數

字符:

元字符
匹配內容
. 匹配除換行符以外的任意字符
\w 匹配字母或數字或下劃線
\s 匹配任意的空白符
\d 匹配數字
\n 匹配一個換行符
\t 匹配一個制表符
\b 匹配一個單詞的結尾
^ 匹配字符串的開始
$ 匹配字符串的結尾
\W
匹配非字母或數字或下劃線
\D
匹配非數字
\S
匹配非空白符
a|b
匹配字符a或字符b
()
匹配括號內的表達式,也表示一個組
[...]
匹配字符組中的字符
[^...]
匹配除了字符組中字符的所有字符

量詞:

量詞
用法說明
* 重復零次或更多次
+ 重復一次或更多次
? 重復零次或一次
{n} 重復n次
{n,} 重復n次或更多次
{n,m} 重復n到m次

five day --模塊