模塊:本質就是.py結尾的文件。從邏輯上組織python代碼。 包: 本質就是一個目錄,帶有__init__.py文件,從邏輯上組織模塊。 模塊的分類: 1.標準庫(內置的模塊) 2.開源庫(第三方庫) 3.自定義模塊 模塊導入方法: 1.import + 模塊名 2.from......impor ...
模塊:本質就是.py結尾的文件。從邏輯上組織python代碼。
包: 本質就是一個目錄,帶有__init__.py文件,從邏輯上組織模塊。
模塊的分類:
1.標準庫(內置的模塊)
2.開源庫(第三方庫)
3.自定義模塊
模塊導入方法:
1.import + 模塊名
2.from......import......
導入模塊的本質,就是把被導入的.py文件解釋執行一遍
導入包的本質,就是把__init__.py文件解釋執行一遍。
1.時間模塊(time與datetime)
1.timestamp(時間戳) 2.format_time(字元串時間) 3.struct_time(結構化時間)
1 import time 2 print(time.asctime()) #接受一個元組轉化為固定形式的字元串時間Thu Jan 10 18:33:34 2019 3 print(time.altzone) #計算與utc時間相差的秒數 4 print(time.ctime()) #接受一個時間戳,轉化為固定形式的字元串時間Thu Jan 10 18:33:34 2019 5 print(time.gmtime()) #將時間戳形式時間轉化為結構化時間 utc時間 6 print(time.localtime()) #將時間戳形式時間轉化為結構化時間 當地時間 7 print(time.mktime()) #將結構化時間轉化為時間戳形式時間 8 print(time.strftime("%Y-%m-%d %H:%M:%S","結構化時間"))#將結構化時間轉化為字元串時間 9 print(time.strptime("2016-12-10 10:12:13","%Y-%m-%d %H:%M:%S"))#將字元串時間轉化為結構化時間 10 print(time.sleep()) #延長時間
時間的轉化
1 import datetime 2 import time 3 print(datetime.datetime.now()) #現在的時間 固定格式 4 print(datetime.date.fromtimestamp(time.time())) #把時間戳轉化為 2019-1-10 5 print(datetime.datetime.now()+datetime.timedelta(hours=+3))#當前時間加3小時, 6 print(datetime.datetime.now()+datetime.timedelta(days=-3))#當前時間減3天 7 print(datetime.datetime.now().replace(month=2,day=3)) #時間替換
2.隨機模塊(random)
1 import random 2 print(random.choice([1,2,3])) #列表中隨機選擇一個數 3 print(random.random()) #(0,1)隨機浮點數 4 print(random.randint(1,3)) #[1,3]之間的隨機整數 5 print(random.randrange(1,3) #(1,3)之間隨機整數 6 print(random.seed(20)) #產生隨機種子 7 print(random.sample(range(10),3)) #從(0,9)之間隨機抽取3個數 8 l = [1,2,3] 9 random.shuffle(l) #隨機打亂 10 print(l) 11 print(random.uniform(1,3)) #(1,3)之間隨機浮點數
1 #隨機生成驗證碼 2 import random 3 def check_code(num): 4 codes = "" 5 for i in range(num): 6 number = random.randint(0,9) 7 alpha = chr(random.randint(97,122)) 8 code = random.choice([number,alpha]) 9 codes += str(code) 10 return codes 11 l = check_code(5) 12 print(l)
1 import sys 2 print(sys.path) #返回當前模塊的搜索路徑 3 print(sys.argv) #命令行參數 ,第一個參數為文件本身路徑 4 # sys.exit() #退出程式,正常退出exit() 5 print(sys.platform) #返回操作平臺名稱 6 print(sys.version) #返回Python 版本
2.os模塊
1 import os 2 print(os.getcwd()) #當前文件目錄 3 os.mkdir("11") #創建11目錄 4 os.makedirs("11/22" ) #創建多級目錄 5 print(os.listdir("G:\Echizen\PycharmProjects\one\learn3")) #列表形式列出該目錄下的所有文件或子目錄 6 os.rename("11/22",'11/33') #目錄重命名 7 os.removedirs("11/33") #刪除多級目錄 8 print(os.stat("G:\Echizen\PycharmProjects\one\learn3\day1.py")) #獲取文件目錄信息 9 print(os.environ) #獲得文件環境 10 print(os.path.abspath("G:\Echizen\PycharmProjects\one\learn3\day1.py")) #獲取文件絕對路徑 11 print(os.path.split("G:\Echizen\PycharmProjects\one\learn3\day1.py")) #將路徑分割成目錄和文件,以元組返回 12 print(os.path.dirname("G:\Echizen\PycharmProjects\one\learn3\day1.py"))#獲得路徑目錄名,即split分割後的第一個 13 print(os.path.basename("G:\Echizen\PycharmProjects\one\learn3\day1.py"))#獲得路徑文件,即split後的第二個 14 print(os.path.exists("G:\Echizen\PycharmProjects\one\learn3\day1.py")) #判斷是否存在該文件 15 print(os.path.isabs("G:\Echizen\PycharmProjects\one\learn3\day1.py")) #判斷是否為絕對路徑 16 print(os.path.isfile("G:\Echizen\PycharmProjects\one\learn3\day1.py")) #判斷是否是一個文件 17 print(os.path.isdir("G:\Echizen\PycharmProjects\one\learn3"))#判斷是否為一個目錄 18 print(os.path.join("G:\Echizen\PycharmProjects\one\learn3","day3")) #連接 19 print(os.path.getatime("G:\Echizen\PycharmProjects\one\learn3\day2.py")) #獲得文件或目錄最後存儲時間 20 print(os.path.getmtime("G:\Echizen\PycharmProjects\one\learn3\day2.py")
#不同包之間的導入操作 import sys,os print(sys.path) x = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.append(x) print(sys.path) import MLView Code
3.re模塊
'.'
預設匹配除\n之外的任意一個字元,若指定flag DOTALL,則匹配任意字元,包括換行
'^'
匹配字元開頭,若指定flags MULTILINE,這種也可以匹配上(r
"^a"
,
"\nabc\neee"
,flags
=
re.MULTILINE)
'$'
匹配字元結尾,或e.search(
"foo$"
,
"bfoo\nsdfsf"
,flags
=
re.MULTILINE).group()也可以
'*'
匹配
*
號前的字元
0
次或多次,re.findall(
"ab*"
,
"cabb3abcbbac"
) 結果為[
'abb'
,
'ab'
,
'a'
]
'+'
匹配前一個字元
1
次或多次,re.findall(
"ab+"
,
"ab+cd+abb+bba"
) 結果[
'ab'
,
'abb'
]
'?'
匹配前一個字元
1
次或
0
次
'{m}'
匹配前一個字元m次
'{n,m}'
匹配前一個字元n到m次,re.findall(
"ab{1,3}"
,
"abb abc abbcbbb"
) 結果
'abb'
,
'ab'
,
'abb'
]
'|'
匹配|左或|右的字元,re.search(
"abc|ABC"
,
"ABCBabcCD"
).group() 結果
'ABC'
'(...)'
分組匹配,re.search(
"(abc){2}a(123|456)c"
,
"abcabca456c"
).group() 結果 abcabca456c
'\A'
只從字元開頭匹配,re.search(
"\Aabc"
,
"alexabc"
) 是匹配不到的
'\Z'
匹配字元結尾,同$
'\d'
匹配數字
0
-
9
'\D'
匹配非數字
'\w'
匹配[A
-
Za
-
z0
-
9
]
'\W'
匹配非[A
-
Za
-
z0
-
9
]
's'
匹配空白字元、\t、\n、\r , re.search(
"\s+"
,
"ab\tc1\n3"
).group() 結果
'\t'
re.match 從頭開始匹配
re.search 匹配包含
re.findall 把所有匹配到的字元放到以列表中的元素返回
re.splitall 以匹配到的字元當做列表分隔符
re.sub 匹配字元並替換
print(re.search("(?P<name>[a-z]{3})(?P<age>[0-9]{2})(?P<sex>[a-z]{3})","zqq24boy"))View Code