1. 程式人生 > >Python學習—基礎篇之常用模塊

Python學習—基礎篇之常用模塊

truct sub 依然 shuf localtime 面向過程編程 style ffffff 結構

常用模塊

模塊,用一砣代碼實現了某個功能的代碼集合。

類似於函數式編程和面向過程編程,函數式編程則完成一個功能,其他代碼用來調用即可,提供了代碼的重用性和代碼間的耦合。而對於一個復雜的功能來,可能需要多個函數才能完成(函數又可以在不同的.py文件中),n個 .py 文件組成的代碼集合就稱為模塊。

python常用模塊主要有:

1. time模塊

2. random模塊

3. hashlib模塊

4. os模塊

5. sys模塊

6. logging模塊

7. 序列化模塊

8. configparser模塊

9. re模塊

10. shutul模塊

11. subprocess模塊

12. xml模塊

13. paramiko模塊

引入模塊的方式

1 import module
2 import module.xxx as name
3 from module import xxx,xxx
4 from module import *

對於第二種的引入方式,將導入的模塊或者模塊方法重命名,個人覺得好處主要有以下兩點:

1.對於模塊名過於冗長的模塊,可以方便使用;

2.對於某些功能可能涉及到修改模塊的源碼,這樣的導入方式可以避免影響到原來的模塊(類似於為每個項目建一個自己的虛擬環境)。

time模塊

1.表示時間的三種方式:

(1)時間戳(timestamp) :通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們運行“type(time.time())”,返回的是float類型。

(2)格式化的時間字符串(Format String): ‘1988-03-16’

(3)元組(struct_time) :struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天等)

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

# <1> 時間戳

import time
time.time()      #--------------返回當前時間的時間戳:1493136727.099066


# <2> 時間字符串

time.strftime("%Y-%m-%d %X")    #
-----------‘2017-04-26 00:32:18‘ # <3> 時間元組 time.localtime() time.struct_time(tm_year=2017, tm_mon=4, tm_mday=26, tm_hour=0, tm_min=32, tm_sec=42, tm_wday=2, tm_yday=116, tm_isdst=0)

2.幾種時間形式的轉換

技術分享圖片

 1 #一 時間戳<---->結構化時間:  localtime/gmtime   mktime
 2 
 3 time.localtime(3600*24)
 4 time.gmtime(3600*24)
 5 
 6 time.mktime(time.localtime())
 7 
 8 
 9 #字符串時間<---->結構化時間: strftime/strptime
10 
11 time.strftime("%Y-%m-%d %X", time.localtime())
12 time.strptime("2017-03-16","%Y-%m-%d")

技術分享圖片

1 time.asctime(time.localtime(312343423))
2 
3 time.ctime(312343423)

3.time & datetime常用操作

技術分享圖片
 1 #_*_coding:utf-8_*_
 2 __author__ = Alex Li
 3 
 4 import time
 5 
 6 
 7 # print(time.clock()) #返回處理器時間,3.3開始已廢棄 , 改成了time.process_time()測量處理器運算時間,不包括sleep時間,不穩定,mac上測不出來
 8 # print(time.altzone)  #返回與utc時間的時間差,以秒計算\
 9 # print(time.asctime()) #返回時間格式"Fri Aug 19 11:14:16 2016",
10 # print(time.localtime()) #返回本地時間 的struct time對象格式
11 # print(time.gmtime(time.time()-800000)) #返回utc時間的struc時間對象格式
12 
13 # print(time.asctime(time.localtime())) #返回時間格式"Fri Aug 19 11:14:16 2016",
14 #print(time.ctime()) #返回Fri Aug 19 12:38:29 2016 格式, 同上
15 
16 
17 
18 # 日期字符串 轉成  時間戳
19 # string_2_struct = time.strptime("2016/05/22","%Y/%m/%d") #將 日期字符串 轉成 struct時間對象格式
20 # print(string_2_struct)
21 # #
22 # struct_2_stamp = time.mktime(string_2_struct) #將struct時間對象轉成時間戳
23 # print(struct_2_stamp)
24 
25 
26 
27 #將時間戳轉為字符串格式
28 # print(time.gmtime(time.time()-86640)) #將utc時間戳轉換成struct_time格式
29 # print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #將utc struct_time格式轉成指定的字符串格式
30 
31 
32 
33 
34 
35 #時間加減
36 import datetime
37 
38 # print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
39 #print(datetime.date.fromtimestamp(time.time()) )  # 時間戳直接轉成日期格式 2016-08-19
40 # print(datetime.datetime.now() )
41 # print(datetime.datetime.now() + datetime.timedelta(3)) #當前時間+3天
42 # print(datetime.datetime.now() + datetime.timedelta(-3)) #當前時間-3天
43 # print(datetime.datetime.now() + datetime.timedelta(hours=3)) #當前時間+3小時
44 # print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #當前時間+30分
45 
46 
47 #
48 # c_time  = datetime.datetime.now()
49 # print(c_time.replace(minute=3,hour=2)) #時間替換
View Code

random模塊

技術分享圖片
 1 import random
 2 random.random()      # 大於0且小於1之間的小數 0.7664338663654585
 3 
 4 random.randint(1,5)  # 大於等於1且小於等於5之間的整數
 5 
 6 random.randrange(1,3) # 大於等於1且小於3之間的整數
 7 
 8 random.choice([1,23,[4,5]])  # #1或者23或者[4,5]
 9 
10 random.sample([1,23,[4,5]],2) # #列表元素任意2個組合 [[4, 5], ‘23‘]
11 
12 random.uniform(1,3) #大於1小於3的小數 1.6270147180533838
13 
14 item=[1,3,5,7,9]
15 random.shuffle(item) # 打亂次序 item[5, 1, 3, 7, 9]
16 random.shuffle(item) # item [5, 9, 7, 1, 3]
View Code 技術分享圖片
 1 # 隨機生成驗證碼
 2 
 3 import random
 4 
 5 def v_code():
 6 
 7     code = ‘‘
 8     for i in range(5):
 9 
10         num=random.randint(0,9)
11         alf=chr(random.randint(65,90))
12         add=random.choice([num,alf])
13         code="".join([code,str(add)])
14 
15     return code
16 
17 print(v_code())
隨機生成驗證碼

hashlib模塊

哈希算法(散列算法):通過一個函數,把任意長度的數據轉換為一個長度固定的數據串(通常用16進制的字符串表示),常常用於對密碼進行加密。hashlib模塊主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 等加密算法。

技術分享圖片
 1 import hashlib
 2  
 3 # ######## md5 ########
 4 hash = hashlib.md5()
 5 # help(hash.update)
 6 hash.update(bytes(admin, encoding=utf-8))
 7 print(hash.hexdigest())  #16進制格式hash
 8 print(hash.digest())  #2進制格式hash
 9  
10  
11 ######## sha1 ########
12  
13 hash = hashlib.sha1()
14 hash.update(bytes(admin, encoding=utf-8))
15 print(hash.hexdigest())
16  
17 # ######## sha256 ########
18  
19 hash = hashlib.sha256()
20 hash.update(bytes(admin, encoding=utf-8))
21 print(hash.hexdigest())
22  
23  
24 # ######## sha384 ########
25  
26 hash = hashlib.sha384()
27 hash.update(bytes(admin, encoding=utf-8))
28 print(hash.hexdigest())
29  
30 # ######## sha512 ########
31  
32 hash = hashlib.sha512()
33 hash.update(bytes(admin, encoding=utf-8))
34 print(hash.hexdigest())
View Code

以上加密算法雖然依然非常厲害,但時候存在缺陷,即:通過撞庫可以反解。所以,有必要對加密算法中添加自定義key再來做加密。

1 import hashlib
2  
3 # ######## md5 ########
4  
5 hash = hashlib.md5(bytes(898oaFs09f,encoding="utf-8"))
6 hash.update(bytes(admin,encoding="utf-8"))
7 print(hash.hexdigest())

python內置還有一個 hmac 模塊,它內部對我們創建 key 和 內容 進行進一步的處理然後再加密

1 import hmac
2  
3 h = hmac.new(bytes(898oaFs09f,encoding="utf-8"))
4 h.update(bytes(admin,encoding="utf-8"))
5 print(h.hexdigest())

To be continue....

Python學習—基礎篇之常用模塊