模組與包
python中的py檔案我們拿來呼叫的為之模組:主要有內建模組(python直譯器自帶),第三方模組(別的開發者開發的),自定義模組。
目前我們學習的是內建模組與第三方模組。
通過import來匯入模組。
一.time模組
time.(函式名稱())
(1)時間戳(timestamp) :通常來說,時間戳表示的是從2023年1月1日00:00:00開始按秒計算的偏移量。我們執行「type(time.time())」,返回的是float型別。
(2)格式化的時間字串(format string): 『1988-03-16』
(3)元組(struct_time) :struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天等)
幾種時間形式的轉換,通過呼叫函式完成幾種時間形式的轉換。
可以將時間戳或者是結構化時間直接轉換成固定格式的字串時間。
二、random模組
import random
random.random()# 位於0和1之間的小數,(隨機數)並且不包括0,1
random.randdint(1,5) #位於1到5之間的整數(隨機數),包含1和5
random.randrange(1,3)#位於1和3之間的整數(隨機數),包含1但不包含3(遵循range的顧頭不顧尾)
random.choice([1,'23',[4,5]])#隨機出現列表內的元素。
random.sample([1,'23',[4,5],2])#隨機出現列表內元素的任意兩個組合。
random.uniform(1,3)#位於1和3之間的小數,不包含1和3。
line=[1,2,3,4,5,6]
random.shuffle(line)#隨機打亂次序,相當於洗牌!
三 hashlib
1. 演算法介紹
python的hashlib提供了常見的摘要演算法,如md5,sha1等等。
什麼是摘要演算法呢?摘要演算法又稱雜湊演算法、雜湊演算法。它通過乙個函式,把任意長度的資料轉換為乙個長度固定的資料串(通常用16進製制的字串表示)。
摘要演算法就是通過摘要函式f()對任意長度的資料data計算出固定長度的摘要digest,目的是為了發現原始資料是否被人篡改過。
摘要演算法之所以能指出資料是否被篡改過,就是因為摘要函式是乙個單向函式,計算f(data)很容易,但通過digest反推data卻非常困難。而且,對原始資料做乙個bit的修改,都會導致計算出的摘要完全不同。
我們以常見的摘要演算法md5為例,計算出乙個字串的md5值:
import hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?')
print md5.hexdigest()
計算結果如下:
d26a53750bc40b38b65a520292f69306
如果資料量很大,可以分塊多次呼叫update(),最後計算的結果是一樣的:
md5 = hashlib.md5()
md5.update('how to use md5 in ')
md5.update('python hashlib?')
print md5.hexdigest()
md5是最常見的摘要演算法,速度很快,生成結果是固定的128 bit位元組,通常用乙個32位的16進製制字串表示。另一種常見的摘要演算法是sha1,呼叫sha1和呼叫md5完全類似:
import hashlib
sha1 = hashlib.sha1()
sha1.update('how to use sha1 in ')
sha1.update('python hashlib?')
print sha1.hexdigest()
sha1的結果是160 bit位元組,通常用乙個40位的16進製制字串表示。比sha1更安全的演算法是sha256和sha512,不過越安全的演算法越慢,而且摘要長度更長
2.摘要演算法的應用
檔案一致性校驗 、 使用者密碼登入可以給使用者弱密碼進行加鹽處理,使其密碼變複雜。
username pwd
admin admin
4523453452345 4732467812364342423
4523453452345 31423149238147982
admin ----------- 4732467812364
adminjindongdf ----------- 4732467812364342423
root ----------- 892345789432
12345678 ----------- 6732456784325
加鹽處理
salt
md5_obj=hashlib.md5("salt")
md5_obj.update("admin") # saltadmin
四、os模組
os模組主要是用於對計算機互動的乙個介面,對於檔案的操作!
os.getcwd() 獲取當前工作目錄,即當前python指令碼工作的目錄路徑
os.chdir("dirname") 改變當前指令碼工作目錄;相當於shell下cd
os.curdir 返回當前目錄: ('.')
os.pardir 獲取當前目錄的父目錄字串名:('..')
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 輸出作業系統特定的路徑分隔符,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 獲取系統環境變數
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以/或\結尾,那麼就會返回空值。即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(path1[, path2[, ...]]) 將多個路徑組合後返回,第乙個絕對路徑之前的引數將被忽略
os.path.getatime(path) 返回path所指向的檔案或者目錄的最後訪問時間
os.path.getmtime(path) 返回path所指向的檔案或者目錄的最後修改時間
os.path.getsize(path) 返回path的大小
python 基礎 6 模組與包
參考 部落格教學 什麼是模組?模組是一些列功能的集合體 常見的模組形式 自定義模式 第三方模組 內建模組 1 乙個module.py就是乙個模組,檔名是module.py,而模組名是module 2 把一系列模組組織到一起的資料夾 注 資料夾下有乙個 init py檔案,該資料夾稱之為包 3 已被編...
python基礎 模組 包
一 模組 1.模組是程式 任何python程式都可以作為模組匯入。程式的儲存也很重要,如果想把程式儲存在c python windows 目錄下,需要告訴直譯器在 尋找模組了。import sys 2.匯入模組 匯入模組只需要一次。import hello 在模組中定義函式 hello python...
python模組與包
路徑修改 命令列怎麼檢視路徑,修改路徑 列印當前搜尋路徑 import sys sys.path sys.path import os os.getcwd os.chdir c www 模組實現構建模組的初衷就是將一些同類的東西進行打包,以免汙染全域性空間,在python的模組裡,對需要隱藏的屬性和...