python經常使用模塊

一、hashlib模塊python

import hashlib
md5 = hashlib.md5()   #加鹽  md5=hashlib.md5(bytes('salt'),encoding='utf-8')
md5.update(b'123456') #  必須是bytes類型   轉bytes類型  passwd = bytes(passwd,encoding='utf-8')
print(md5.hexdigest()) # 123456 MD5的結果 e10adc3949ba59abbe56e057f20f883e 
兩個實例:
import hashlib
usr= input('username: ')
pwd = input('passwd: ')
with open('userinfo')  as f:
    for line in f:
        username,passwd,job = line.split('|')
        md5=hashlib.md5()
        md5.update(bytes(pwd, encoding='utf-8'))
        pwd=md5.hexdigest()
        if usr==username and pwd==passwd:
            print('登錄成功')
        else:
            print('用戶名或密碼錯誤')
    f.close()

#文件的md5

import hashlib
md5=hashlib.md5()
with open('test.txt') as f:
    for line in f:
        md5.update(bytes(line,encoding='utf-8'))    #md5.update 能夠對字符串或文件分屢次update
    print(md5.hexdigest())
View Code

二、時間模塊:shell

python有三種方式表示時間:時間戳、元組、格式化時間字符串:bash

(1)時間戳:1970年1月1日00:00:00開始按秒計算的偏移量,返回float類型,如:dom

import time
print(time.time())   # 1532875990.1858788
View Code

(2)元組:ide

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

索引(Index) 屬性(Attribute) 值(Values)
0 tm_year(年) 好比2011
1 tm_mon(月) 1 - 12
2 tm_mday(日) 1 - 31
3 tm_hour(時) 0 - 23
4 tm_min(分) 0 - 59
5 tm_sec(秒) 0 - 60
6 tm_wday(weekday) 0 - 6(0表示週一)
7 tm_yday(一年中的第幾天) 1 - 366
8 tm_isdst(是不是夏令時) 默認爲0
import time
print(time.localtime())

#輸出結果
time.struct_time(tm_year=2018, tm_mon=7, tm_mday=29, tm_hour=22, tm_min=55, tm_sec=40, tm_wday=6, tm_yday=210, tm_isdst=0)
View Code

 (3)格式化時間字符串spa

%y 兩位數的年份表示(00-99%Y 四位數的年份表示(000-9999%m 月份(01-12%d 月內中的一天(0-31%H 24小時制小時數(0-23%I 12小時制小時數(01-12%M 分鐘數(00=59%S 秒(00-59%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天爲星期的開始
%w 星期(0-6),星期天爲星期的開始
%W 一年中的星期數(00-53)星期一爲星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號自己
View Code
import time
print(time.strftime("%Y-%m-%d %X"))  # 2018-07-29 23:00:54
print(time.strftime("%Y-%m-%d %H-%M-%S"))   #2018-07-29 23-01-37
print(time.strftime("%Y.%m.%d"))  #2018.07.29
View Code

 

三、random模塊操作系統

import random
print(random.random())   # 0.05734134949398206   大於0且小於1之間的小數
print(random.uniform(1,5))  # 3.026923245207668  大於1小於5的小數
print(random.randint(1,200))   #隨機整數
print(random.randrange(1,200,2)) #隨機奇數
print(random.choices((1,[1,2],(1,2))))  #隨機選擇一個
print(random.sample([1,'23',[4,5]],2)) #列表元素任意2個組合
View Code

一個例子:隨機驗證碼命令行

def captcha_code():
    code=''
    for i in range(5):
        num = random.randint(0,9)   #大於等於0,小於等於9=
        alphabet = chr(random.randint(65,90))
        add = random.choice([num,alphabet])
        code = code+str(add)
    print(code)
captcha_code()
View Code

 

四、logging 模塊線程

import logging  
logging.debug('debug message')         #排錯信息
logging.info('info message')                 #正常信息
logging.warning('warning message')   #告警信息
logging.error('error message')             #錯誤信息
logging.critical('critical message')         #高級別、嚴重信息
import logging
logger = logging.getLogger()
fh = logging.FileHandler('test.txt',encoding='utf-8')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setLevel(logging.DEBUG)

sh = logging.StreamHandler()
fh.setFormatter(formatter) #文件操做符 和 格式 關聯
sh.setFormatter(formatter) #屏幕操做符 和 格式 關聯
logger.addHandler(fh) #logger對象和文件操做符 關聯
logger.addHandler(sh) #logger對象和屏幕操做符 關聯

logger.debug('logger debug message')
logger.info('logger info message')
logger.warning('WARNING warning message')
logger.error('logger error message')
logger.critical('logger critical message')

配置參數:

logging.basicConfig()函數中可經過具體參數來更改logging模塊默認行爲,可用參數有:

filename:用指定的文件名建立FiledHandler,這樣日誌會被存儲在指定的文件中。
filemode:文件打開方式,在指定了filename時使用這個參數,默認值爲「a」還可指定爲「w」。
format:指定handler使用的日誌顯示格式。
datefmt:指定日期時間格式。
level:設置rootlogger(後邊會講解具體概念)的日誌級別
stream:用指定的stream建立StreamHandler。能夠指定輸出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默認爲sys.stderr。若同時列出了filename和stream兩個參數,則stream參數會被忽略。

format參數中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 數字形式的日誌級別
%(levelname)s 文本形式的日誌級別
%(pathname)s 調用日誌輸出函數的模塊的完整路徑名,可能沒有
%(filename)s 調用日誌輸出函數的模塊的文件名
%(module)s 調用日誌輸出函數的模塊名
%(funcName)s 調用日誌輸出函數的函數名
%(lineno)d 調用日誌輸出函數的語句所在的代碼行
%(created)f 當前時間,用UNIX標準的表示時間的浮 點數表示
%(relativeCreated)d 輸出日誌信息時的,自Logger建立以 來的毫秒數
%(asctime)s 字符串形式的當前時間。默認格式是 「2003-07-08 16:49:45,896」。逗號後面的是毫秒
%(thread)d 線程ID。可能沒有
%(threadName)s 線程名。可能沒有
%(process)d 進程ID。可能沒有
%(message)s用戶輸出的消息
View Code

 

五、sys模塊

sys模塊是與python解釋器交互的一個接口

sys.argv           在外部向程序內部傳遞參數,命令行參數List,第一個元素是程序自己路徑,如 python 1.py 1024,返回的sys.argv[0]>1.py(自己),sys.argv[1]>1024
sys.exit(n)        退出程序,正常退出時exit(0),錯誤退出sys.exit(1)
sys.version        獲取Python解釋程序的版本信息
sys.path           返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值
sys.platform       返回操做系統平臺名稱

 

六、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.popen("bash command).read()  運行shell命令,獲取執行結果
os.environ  獲取系統環境變量

os.path
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的大小
相關文章
相關標籤/搜索