一.簡介html
模塊是一個保存了Python代碼的文件。模塊能定義函數,類和變量。模塊裏也能包含可執行的代碼python
模塊分爲三種:linux
自定義模塊:程序員
模塊導入算法
import module from module.xx.xx import xx from module.xx.xx import xx as rename from module.xx.xx import *
導入自定義模塊時注意路徑,查看庫文件sys.path,sys.path.append('路徑')添加自定義路徑shell
二.內置模塊數據庫
time模塊提供各類操做時間的函數windows
說明:通常有兩種表示時間的方式:
1.時間戳的方式(相對於1970.1.1 00:00:00以秒計算的偏移量),時間戳是唯一的
2.以數組的形式表示即(struct_time),共有九個元素,分別表示,同一個時間戳的struct_time會由於時區不一樣而不一樣數組
The tuple items are:
year (including century, e.g. 1998)
month (1-12)
day (1-31)
hours (0-23)
minutes (0-59)
seconds (0-59)
weekday (0-6, Monday is 0)
Julian day (day in the year, 1-366)
DST (Daylight Savings Time) flag (-1, 0 or 1)
time() -- 返回時間戳
sleep() -- 延遲運行單位爲s
gmtime() -- 轉換時間戳爲時間元組(時間對象)
localtime() -- 轉換時間戳爲本地時間對象
asctime() -- 將時間對象轉換爲字符串
ctime() -- 將時間戳轉換爲字符串
mktime() -- 將本地時間轉換爲時間戳
strftime() -- 將時間對象轉換爲規範性字符串
經常使用的格式代碼:
%Y Year with century as a decimal number.
%m Month as a decimal number [01,12].
%d Day of the month as a decimal number [01,31].
%H Hour (24-hour clock) as a decimal number [00,23].
%M Minute as a decimal number [00,59].
%S Second as a decimal number [00,61].
%z Time zone offset from UTC.
%a Locale's abbreviated weekday name.
%A Locale's full weekday name.
%b Locale's abbreviated month name.
%B Locale's full month name.
%c Locale's appropriate date and time representation.
%I Hour (12-hour clock) as a decimal number [01,12].
%p Locale's equivalent of either AM or PM.bash
strptime() -- 將時間字符串根據指定的格式化符轉換成數組形式的時間
經常使用格式代碼:
同strftime
定義的類有:
datetime.date --表示日期的類。經常使用的屬性有year, month, day
datetime.time --表示時間的類。經常使用的屬性有hour, minute, second, microsecond
datetime.datetime --表示日期時間
datetime.timedelta --表示時間間隔,即兩個時間點之間的長度
date類表示日期,構造函數以下 :
datetime.date(year, month, day);
year (1-9999)
month (1-12)
day (1-31)
date.today() --返回一個表示當前本地日期的date對象
date.fromtimestamp(timestamp) --根據給定的時間戮,返回一個date對象
date.year() --取給定時間的年
date.month() --取時間對象的月
date.day() --取給定時間的日
date.replace() --生成一個新的日期對象,用參數指定的年,月,日代替原有對象中的屬性
date.timetuple() --返回日期對應的time.struct_time對象
date.weekday() --返回weekday,Monday == 0 ... Sunday == 6
date.isoweekday() --返回weekday,Monday == 1 ... Sunday == 7
date.ctime() --返回給定時間的字符串格式
1
2
3
4
5
6
|
import
datetime
from
dateutil.relativedelta
import
relativedelta
# 獲取當前時間的前一個月
datetime.datetime.now()
-
relativedelta(months
=
+
1
)
# 獲取當天的前一個月
datetime.date.today()
-
relativedelta(months
=
+
1
)
|
time類表示時間,由時、分、秒以及微秒組成
time.min() --最小表示時間
time.max() --最大表示時間
time.resolution() --微秒
datetime是date與time的結合體,包括date與time的全部信息
datetime.max() --最大值
datetime.min() --最小值
datetime.resolution() --datetime最小單位
datetime.today() --返回一個表示當前本地時間
datetime.fromtimestamp() --根據給定的時間戮,返回一個datetime對象
datetime.year() --取年
datetime.month() --取月
datetime.day() --取日期
datetime.replace() --替換時間
datetime.strptime() --將字符串轉換成日期格式
datetime.time() --取給定日期時間的時間
用於提供對解釋器相關的訪問及維護,並有很強的交互功能
經常使用函數:
sys.argv --傳參,第一個參數爲腳本名稱即argv[0]
sys.path --模塊搜索路徑
sys.moudule --加載模塊字典
sys.stdin --標準輸入
sys.stdout --標準輸出
sys.stderr --錯誤輸出
sys.platform --返回系統平臺名稱
sys.version --查看python版本
sys.maxsize --最大的Int值
舉例:
#!/usr/bin/env python # -*- coding:utf-8 -*- #傳參 import sys print(sys.argv[0]) print(sys.argv[1]) print(sys.argv[2]) ##運行 python argv.py argv0 argv1 argv.py argv0 argv1
#sys.exit()系統返回值 >>> import sys >>> sys.exit(0) C:\>echo %ERRORLEVEL% 0 #windows查看系統返回值命令 echo %ERRORLEVEL% #linux查看系統返回值命令 echo $?
pickle,用於python特有的類型 和 python的數據類型間進行轉換
pickle模塊提供了四個功能:dumps、dump、loads、load
Functions:
dump(object, file)
dumps(object) -> string
load(file) -> object
loads(string) -> object
pickle.dumps(obj)--把任意對象序列化成一個str,而後,把這個str寫入文件
pickle.loads(string) --反序列化出對象
pickle.dump(obj,file) --直接把對象序列化後寫入文件
pickle.load(file) --從文件中反序列化出對象
#!/usr/bin/env python # -*- coding:utf-8 -*- import pickle accounts = { 1000: { 'name':'USERA', 'email': 'lijie3721@126.com', 'passwd': 'abc123', 'balance': 15000, 'phone': 13651054608, 'bank_acc':{ 'ICBC':14324234, 'CBC' : 235234, 'ABC' : 35235423 } }, 1001: { 'name': 'USERB', 'email': 'caixin@126.com', 'passwd': 'abc145323', 'balance': -15000, 'phone': 1345635345, 'bank_acc': { 'ICBC': 4334343, } }, } #把字典類型寫入到文件中 f = open('accounts.db','wb') f.write(pickle.dumps(accounts)) f.close() #2,反序列出對象並修改其內容,並將修改內容從新寫入文件 file_name = "accounts.db" f = open(file_name,'rb') account_dic = pickle.loads(f.read()) f.close() account_dic[1000]['balance'] -= 500 f = open(file_name,'wb') f.write(pickle.dumps(account_dic)) f.close() #3,反序列化對象並查看其內容 f = open('accounts.db','rb') acountdb = pickle.loads(f.read()) print(acountdb)
dic = { 'k1': [1,2], 'k2': [3,4] } #1.將對象寫入文件 f = open('test','wb') pickle.dump(dic,f) f.close() #2.將文件中內容反序列化,並讀出 f = open('test','rb') dic2 = pickle.load(f) print(dic2) f.close()
做用:
用於提供系統級別的操做
函數:
1 os.getcwd() 獲取當前工做目錄,即當前python腳本工做的目錄路徑 2 os.chdir("dirname") 改變當前腳本工做目錄;至關於shell下cd 3 os.curdir 返回當前目錄: ('.') 4 os.pardir 獲取當前目錄的父目錄字符串名:('..') 5 os.makedirs('dir1/dir2') 可生成多層遞歸目錄 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","new") 重命名文件/目錄 12 os.stat('path/filename') 獲取文件/目錄信息 13 os.sep 操做系統特定的路徑分隔符,win下爲"\\",Linux下爲"/" 14 os.linesep 當前平臺使用的行終止符,win下爲"\t\n",Linux下爲"\n" 15 os.pathsep 用於分割文件路徑的字符串 16 os.name 字符串指示當前使用平臺。win->'nt'; Linux->'posix' 17 os.system("bash command") 運行shell命令,直接顯示 18 os.environ 獲取系統環境變量 19 os.path.abspath(path) 返回path規範化的絕對路徑 20 os.path.split(path) 將path分割成目錄和文件名二元組返回 21 os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第一個元素 22 os.path.basename(path) 返回path最後的文件名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素 23 os.path.exists(path) 若是path存在,返回True;若是path不存在,返回False 24 os.path.isabs(path) 若是path是絕對路徑,返回True 25 os.path.isfile(path) 若是path是一個存在的文件,返回True。不然返回False 26 os.path.isdir(path) 若是path是一個存在的目錄,則返回True。不然返回False 27 os.path.join(path1[, path2[, ...]]) 將多個路徑組合後返回,第一個絕對路徑以前的參數將被忽略 28 os.path.getatime(path) 返回path所指向的文件或者目錄的最後存取時間 29 os.path.getmtime(path) 返回path所指向的文件或者目錄的最後修改時間
做用:
用於加密相關的操做,代替了md5模塊和sha模塊,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
加密算法缺陷,即:經過撞庫能夠反解。因此,有必要對加密算法中添加自定義key再來作加密
做用:
生成隨機變量
import random print(random.random()) print(random.randint(1, 2)) print(random.randrange(1, 10))
import random checkcode = '' for i in range(4): current = random.randrange(0,4) if current != i: temp = chr(random.randint(65,90)) else: temp = random.randint(0,9) checkcode += str(temp) print checkcode