five day --模塊
阿新 • • 發佈:2018-05-08
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 indefaultdictl: 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)
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 bdeque
二、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 passwordView 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 轉義:測試工具寫好後,加r‘ 16 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 --模塊