溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python模塊介紹一

發(fā)布時間:2020-07-25 10:19:27 來源:網絡 閱讀:425 作者:zjy1002261870 欄目:編程語言

模塊講解

import time

print(time.time())
print(time.strftime('%Y-%m-%d %X')) # 2018-10-25 15:06:16 Y代表year,m為mouth,d為day,x為時間
c = time.localtime(time.time()+3600243)
print(c)

time.struct_time(tm_year=2018, tm_mon=10, tm_mday=25, tm_hour=15, tm_min=7, tm_sec=20, tm_wday=3, tm_yday=298, tm_isdst=0)

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

時間戳轉化為結構化時間localtime/gmtime

gmtime為世界標準時間,一般不使用。

localtime為東八區(qū)時間,為我們所在的時間,常使用localtime

print(time.gmtime())
print(time.strptime('2018-10-20','%Y-%m-%d'))

import random
print(random.random()) #輸出大于0且小于1之間的小數
print(random.randint(1,6)) # 隨機輸出大于等于1且小于等于5之間的整數,[1,5]
print(random.randrange(1,3)) # 隨機輸出大于等于1且小于3之間的整數,[1,3)

print(random.choice([1, '2', [3, 4]])) # 隨機取列表中的一個元素,結果為1或者2或者[3,4]
print(random.sample([1, '2', [3, 4]], 2)) # 隨機取列表中任意2個元素
print(random.uniform(1, 3)) # 隨機取大于1小于3的小數
item = [1, 2, 3, 4, 5]
print(random.shuffle(item)) # 直接輸出,什么都沒有
random.shuffle(item)
print(item)
print(item) # 再次打印結果和上一次輸出結果一樣,需要重新打亂才能輸出重新排序的列表
random.shuffle(item)
print(item)

#生成5位的隨機碼
def get_random_number():
s=''
for i in range(5):
num = str(random.randint(0,9))
c1=chr(random.randint(97,122))
c2=chr(random.randint(65,90))
rnum=random.choice([num,c1,c2])
s+=rnum
print(s)
get_random_number()

"""
Hashlib
Python的hashlib提供了常見的摘要算法,如MD5,SHA1等等。
什么是摘要算法呢?摘要算法又稱哈希算法、散列算法。它通過一個函數,把任意長度的數據轉換為一個長度固定的數據串(通常用16進制的字符串表示)。
摘要算法就是通過摘要函數f()對任意長度的數據data計算出固定長度的摘要digest,目的是為了發(fā)現原始數據是否被人篡改過。
摘要算法之所以能指出數據是否被篡改過,就是因為摘要函數是一個單向函數,計算f(data)很容易,但通過digest反推data卻非常困難。
而且,對原始數據做一個bit的修改,都會導致計算出的摘要完全不同。
我們以常見的摘要算法MD5為例,計算出一個字符串的MD5值:
摘要算法應用: 文件一致性校驗 、 登錄
任何允許用戶登錄的網站都會存儲用戶登錄的用戶名和口令。如何存儲用戶名和口令呢?方法是存到數據庫表中:
name | password
--------+----------
michael | 123456
bob | abc999
alice | alice2008
如果以明文保存用戶口令,如果數據庫泄露,所有用戶的口令就落入***的手里。此外,網站運維人員是可以訪問數據庫的,也就是能獲取到所有用戶的口令。

正確的保存口令的方式是不存儲用戶的明文口令,而是存儲用戶口令的摘要,比如MD5:
username | password
---------+---------------------------------
michael | e10adc3949ba59abbe56e057f20f883e
bob | 878ef96e86145580c38c87f0410ad153
alice | 99b1c2188db85afee403b1536010c2c9
考慮這么個情況,很多用戶喜歡用123456,888888,password這些簡單的口令,于是,***可以事先計算出這些常用口令的MD5值,得到一個反推表:
'e10adc3949ba59abbe56e057f20f883e': '123456'
'21218cca77804d2ba1922c33e0151105': '888888'
'5f4dcc3b5aa765d61d8327deb882cf99': 'password'
這樣,無需破解,只需要對比數據庫的MD5,***就獲得了使用常用口令的用戶賬號。
對于用戶來講,當然不要使用過于簡單的口令。但是,我們能否在程序設計上對簡單口令加強保護呢?
由于常用口令的MD5值很容易被計算出來,所以,要確保存儲的用戶口令不是那些已經被計算出來的常用口令的MD5,這一方法通過對原始口令加一個復雜字符串來實現,俗稱“加鹽”:1
hashlib.md5("salt".encode("utf8")) #“加鹽”的內容此時是salt,也可以為賬戶名xuyaping,字符串a,數字1等等
經過Salt處理的MD5口令,只要Salt不被***知道,即使用戶輸入簡單口令,也很難通過MD5反推明文口令。

但是如果有兩個用戶都使用了相同的簡單口令比如123456,在數據庫中,將存儲兩條相同的MD5值,這說明這兩個用戶的口令是一樣的。

有沒有辦法讓使用相同口令的用戶存儲不同的MD5呢?

如果假定用戶無法修改登錄名,就可以通過把登錄名作為Salt的一部分來計算MD5,從而實現相同口令的用戶也存儲不同的MD5。

摘要算法在很多地方都有廣泛的應用。要注意摘要算法不是加密算法,不能用于加密(因為無法通過摘要反推明文),只能用于防篡改,

但是它的單向計算特性決定了可以在不存儲明文口令的情況下驗證用戶口令。

"""
import hashlib
md5=hashlib.md5()
md5.update('how to use md5'.encode('utf-8'))
print(md5.hexdigest())

"""
os模塊是與操作系統(tǒng)交互的一個接口
os.getcwd() 獲取當前工作目錄,即當前python腳本工作的目錄路徑
os.chdir()  當前目錄
os.chdir("dirname") 改變當前腳本工作目錄;相當于shell下cd
os.curdir 返回當前目錄: ('.'),相當于shell下cd.
os.pardir 獲取當前目錄的父目錄字符串名:('..'),相當于shell下cd.. 返回上一層目錄
os.makedirs('dirname1/dirname2') 可生成多層遞歸目錄
os.removedirs('dirname1') 若目錄為空,則刪除,并遞歸到上一級目錄,如若也為空,則刪除,依此類推
os.mkdir('dirname') 生成單級目錄;相當于shell中mkdir dirname
os.rmdir('dirname') 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當于shell中rmdir dirname
os.listdir('dirname') 列出指定目錄下的所有文件和子目錄,包括隱藏文件,并以列表方式打印
os.remove() 刪除一個文件
os.rename("oldname","newname") 重命名文件/目錄
os.stat('path/filename') 獲取文件/目錄信息
os.sep 輸出操作系統(tǒng)特定的路徑分隔符,win下為"\",Linux下為"/"
os.linesep 輸出當前平臺使用的行終止符,win下為"\t\n",Linux下為"\n"
os.pathsep 輸出用于分割文件路徑的字符串 win下為;,Linux下為:
os.name 輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix'
os.system("bash command") 運行shell命令,直接顯示
os.environ 獲取系統(tǒng)環(huán)境變量
os.path.abspath(path) 返回path規(guī)范化的絕對路徑
os.path.split(path) 將path分割成目錄和文件名二元組返回
os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第一個元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\結尾,那么就會返回空值。即os.path.split(path)的第二個元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是絕對路徑,返回True
os.path.isfile(path) 如果path是一個存在的文件,返回True。否則返回False
os.path.isdir(path) 如果path是一個存在的目錄,則返回True。否則返回False
os.path.join(path2[, path3[, ...]]) 將多個路徑組合后返回,第一個絕對路徑之前的參數將被忽略
os.path.getatime(path) 返回path所指向的文件或者目錄的最后存取時間
os.path.getmtime(path) 返回path所指向的文件或者目錄的最后修改時間
os.path.getsize(path) 返回path的大小

五 sys模塊
sys.argv 命令行參數List,第一個元素是程序本身路徑
sys.exit(n) 退出程序,正常退出時exit(0)
sys.version 獲取Python解釋程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模塊的搜索路徑,初始化時使用PYTHONPATH環(huán)境變量的值
sys.platform 返回操作系統(tǒng)平臺名稱
"""

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI