1 import random 2 3 def v_code(): 4 for i in range(5): 5 code1 = random.randrange(10) #生成一個隨機0-9隨機數字 6 code2 = random.choice(chr(random.randrange(65,9 ...
#-----time模塊-----
1 print(help(time)) #列印time幫助文檔 2 print(time.time()) #列印時間戳 1569824501.6265268 3 time.sleep(2) 4 print(time.perf_counter()) #計時器 5 print(time.process_time()) #處理時間 6 print(time.gmtime()) #結構化時間,UTC時間 7 print(time.localtime()) #本地時間 8 print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())) #2019-09-30 14:51:34 9 print(time.strftime("%Y-%m-%d %X",time.localtime())) #2019-09-30 14:51:34 10 11 a = time.strptime("2019-09-30 14:51:34","%Y-%m-%d %H:%M:%S") 12 #time.struct_time(tm_year=2019, tm_mon=9, tm_mday=30, tm_hour=14, tm_min=51, tm_sec=34, tm_wday=0, tm_yday=273, tm_isdst=-1) 13 print(a.tm_year) 14 15 #時間戳表現形式:1、結構化時間 2、格式化時間 16 17 print(time.ctime()) 18 print(time.mktime(time.localtime())) #轉換為時間戳 1569827234.0
#-----datetime模塊-----
print(datetime.datetime.now()) #2019-09-30 15:53:13.628849
#-----random 隨機數-----
1 print(random.random()) #0~1之間的數 2 print(random.randint(1,3)) #包括3 3 print(random.choice(['剪刀','石頭','布'])) #取列表中的一個值 4 print(random.choice('1''2''3''4''5')) 5 print(random.randrange(10)) #在0~9 之間取隨機數
#-----打亂排序
1 iters = [1,2,3,4,5,6,7,8,9] 2 a = random.shuffle(iters) 3 print(iters) #[5, 8, 1, 4, 3, 7, 9, 6, 2]
#多個字元串中選取指定數量的字元組成新字元串:
1 print(''.join(random.sample(['a','z','d','w','r','w','y','i'],3)))
#-----隨機生成5位驗證碼
1 import random 2 3 def v_code(): 4 for i in range(5): 5 code1 = random.randrange(10) #生成一個隨機0-9隨機數字 6 code2 = random.choice(chr(random.randrange(65,91))) #生成一個隨機大寫字母 7 code3 = random.choice(chr(random.randrange(97,123))) #生成一個隨機小寫字母 8 print(random.choice([code1,code2,code3]),end="") 9 v_code()View Code
#-----os 模塊-----
1 import os 2 3 #-----os模塊(測試系統為linux環境)----- 4 print(os.getcwd()) #獲取當前目錄 5 print(os.getcwd()) 6 print(os.chdir(r"/")) #修改當前路徑 7 print(os.getcwd()) 8 os.makedirs('dream') #創建一個文件夾 9 print(os.getcwd()) 10 os.remove('dream//1.py')#刪除單個文件1.py 11 os.removedirs('dream')#只能刪除空文件夾,刪除dream文件夾 12 os.mkdir('wx')#生成單個目錄 13 os.mkdir('wx//qq') 14 os.removedirs('wx//qq')#只能刪除空文件夾 15 os.rmdir('wx') #刪除文件夾 16 os.makedirs('dream//test//rise') #創建對多文件夾 17 a = os.listdir(r'/home/rise/PycharmProjects/mode1/02部分/week4/day3') 18 print(a) #列出指定目錄下的所有文件和子目錄 19 os.remove('1.py') #只能刪除文件,不能刪除文件夾 20 os.rename('1.py','test.py') #重命名文件 21 print(os.name)#輸出字元串指示當前使用平臺。win->'nt'; Linux->'posix' 22 info = os.stat(r"day3.1.txt") #獲取文件信息 23 print(info.st_size) #2758 24 print(os.sep) # / #路徑分割符 25 print(os.pathsep) #環境變數風格符 26 os.system("ls") #執行shell命令 27 print(os.path.abspath('./day3.1.txt')) #/home絕對路徑 /rise/PycharmProjects/mode1/02部分/week4/day3/day3.1.txt 28 print(os.path.split('/rise/PycharmProjects/mode1/02部分/week4/day3/day3.1.txt')) #路徑分割,分割為路徑和文件名 29 #('/rise/PycharmProjects/mode1/02部分/week4/day3', 'day3.1.txt') 30 print(os.path.dirname('/rise/PycharmProjects/mode1/02部分/week4/day3/day3.1.txt')) #返回絕對路徑上一層 31 print(os.environ) #顯示環境變數 32 print(os.name)#輸出字元串指示當前使用平臺。win->'nt'; Linux->'posix' 33 print(os.path.dirname(__file__)) #輸出當前文件路徑 34 /home/rise/PycharmProjects/mode1/02部分/week4/day3
#-----sys模塊(與Python解釋器進行交互)-----
1 import sys 2 3 print(sys.argv) 4 print(sys.exit()) 5 print(sys.path) #搜尋模塊路徑的列表 6 print(sys.version)#獲取python解釋器版本信息 7 print(sys.platform) #返回操作系統平臺名稱
#-----hashlib模塊-----
1 import hashlib 2 3 #----md5 4 m1 = hashlib.md5() 5 m1.update("learn english".encode("utf-8")) #編碼轉換,update 處理數據類型為byte類型 6 print(m1.hexdigest()) #51e219953881565e51a2c54c4947c3c0 7 8 #----sha256 9 hashlib.sha256 10 m2 = hashlib.sha256() 11 m2.update("learn english".encode("utf-8")) #編碼轉換,update 處理數據類型為byte類型 12 print(m2.hexdigest()) #c980e31678b5f1ac8ee13ccebf192320a98714600c0e971555c221509e13efe0
#-----logging模塊-----
1 import logging 2 3 logging.basicConfig(level=logging.INFO, 4 format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s', 5 datefmt='%a,%d %m %Y %H:%M:%S', 6 7 filename='text.log', #filename 改變輸出方式 8 filemode='a') 9 10 logging.debug('debug message1') 11 logging.info('info message2') 12 logging.warning('warning message3') 13 logging.error('error message4') 14 logging.critical('critical message5')View Code
#-----logging屏幕與文件同時輸出-----
1 import logging 2 3 logger = logging.getLogger() 4 #創建一個handler,用於寫入日誌文件 5 fh = logging.FileHandler('test.log') 6 7 #在創建一個handler,用於輸出到控制台(屏幕輸出) 8 ch = logging.StreamHandler() 9 10 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 11 12 fh.setFormatter(formatter) 13 ch.setFormatter(formatter) 14 15 logger.addHandler(fh) #添加文件輸出 16 logger.addHandler(ch) #添加屏幕輸出 17 18 19 logger.setLevel(logging.DEBUG) #日誌級別 20 21 logger.debug('debug message1') 22 logger.info('info message2') 23 logger.warning('warning message3') 24 logger.error('error message4') 25 logger.critical('critical message5')View Code
#-----configparser(創建配置文件)-----
1 import configparser 2 3 config = configparser.ConfigParser() 4 config["DEFAULT"] = { 5 "Server":45, 6 "Compression":"yes", 7 "ComprewssionLevel":9} 8 config['dream'] = { 9 "name":"dream", 10 "age":21, 11 "sex":"male"} 12 config['test'] ={ 13 "ttt":"t", 14 "aaa":"a", 15 "bbb":'b'} 16 with open("config.ini",'w') as configfile: 17 config.write(configfile)
#-----輸出結果(配置文件)
1 [DEFAULT] 2 server = 45 3 compression = yes 4 comprewssionlevel = 9 5 6 [dream] 7 name = dream 8 age = 21 9 sex = male 10 11 [test] 12 ttt = t 13 aaa = a 14 bbb = bView Code
#-----讀取
1 config = configparser.ConfigParser() 2 config.read("config.ini") 3 print(config.sections()) #除去預設的,['dream'] 4 print(config.defaults()) #生成有序的字典,列印預設中的信息。OrderedDict([('server', '45'), ('compression', 'yes'), ('comprewssionlevel', '9')]) 5 print(config.default_section) #DEFAULT 6 print(config['DEFAULT']['server']) #類似字典取法,45 7 8 for key in config["dream"]: 9 print(key,end=" ") 10 #除列印需求的,同時列印DEFAULT(預設的)name age sex server compression comprewssionlevel
#-----修改
1 config = configparser.ConfigParser() 2 config.read("config.ini") #讀取文件 3 config.remove_section('dream') #刪除分組['dream']的配置文件 4 config.write(open("config1.ini",'w')) #刪除後另存為config1文件 5 6 config.read("config1.ini") #讀取文件 7 ter1 = config.has_section('dream') 8 print(ter1) #檢查是否在,返回False 9 10 config.remove_option('test','ttt') #刪除分組中的部分 11 config.write(open('config2.ini','w')) 12 13 config.read('config2.ini') 14 ter2 = config.has_option('test','ttt') 15 print(ter2) #False 16 17 config.add_section("h1") 18 config.write(open("config4.ini",'w')) #生成分組[h1] 19 20 config.read("config2.ini") 21 config.set('test','aaa','a1') #修改['h1']['aaa'] 相關的值,將'a'改為'a1' 22 config.write(open("config3.ini","w"))
#-----re正則表達式:匹配字元串-----
#正則表達式的方法:
1、re.findall() :所有結果都返回到一個列表裡
2、re.search() :返回對象(object),對象調用group()返回結果
3、match() :只在字元串開始匹配
4、re.split() :分割
5、re.sub() :替換
6、re.compile : 共用規則,多次調用規則進行匹配
#string(字元串)提供匹配方法是完全匹配
1 import re 2 3 #源字元 . ^ $ * + ? {} ( ) \ 4 5 #通配符 . (點代指任意一個字元,換行符\n ,無法匹配到) 6 ret1 = re.findall("w..l","hello world") 7 print(ret1) 8 9 # ^ (以最開始的位置匹配) 10 ret2 = re.findall('^a..n','adfnddfdafffn') 11 print(ret2) 12 13 # $ (以結尾的位置匹配) 14 ret3 = re.findall('a..n$','addnadfddfkdafdn') 15 print(ret3) 16 17 # * (重覆匹配)[0,+00] 18 ret4 = re.findall('abc*','abcccccc') 19 print(ret4)#貪婪匹配方法['abcccccc'] 20 21 # +(重覆匹配)[1,+00] 22 ret5 = re.findall('abc+','abcccccf') 23 print(ret5) #['abccccc'] 24 25 # ? 惰性匹配[0,1] 26 ret6 = re.findall('abc?','abccabdcccc') 27 print(ret6)# [0,1] 28 29 # {} 30 ret7 = re.findall('a{5}b',"eaaaaaabbbcdfgd") 31 print(ret7) 32 ret8 = re.findall('a{1,3}b',"eaaaaaabbbcdfgd") 33 print(ret8) 34 35 # [] 36 ret9 = re.findall('a[bc]d','abdcacdabcd') 37 print(ret9) #[bc] 之間的關係為或的關係 38 39 ret10 = re.findall('abc*?','abcdffgabccgh') 40 print(ret10) # ? 惰性匹配 41 42 #[^a-z] 取反 43 ret = re.findall("[^a-z]","123435fsfafdfsd") 44 print(ret) #['1', '2', '3', '4', '3', '5'] 45 46 #------ [] 字元集: 取消元字元的特殊功能(\ ^ -) 47 48 ret = re.findall('a[bc,*]d','abdcacdabca*d') 49 print(ret) #['abd', 'acd', 'a*d'] 50 51 ret = re.findall('[1-9,a-z,A-Z]',"12wff7ofWHfe") 52 print(ret) #['1', '2', 'w', 'f', 'f', '7', 'o', 'f', 'W', 'H', 'f', 'e'] 53 54 # \ (1、反斜杠後面的元字元去掉特殊功能 2、反斜杠後面跟普通字元實現特殊功能) 55 ret = re.findall("\d{11}","asda1234454676677dd") 56 print(ret) #['12344546766'] 57 58 #\w 匹配任何字母數字字元 59 ret = re.findall("\w","asda1237d") 60 print(ret) #['a', 's', 'd', 'a', '1', '2', '3', '7', 'd'] 61 ret1 = re.findall("\w+","i am a boy") 62 print(ret1) #['i', 'am', 'a', 'boy'] 63 64 #\b 匹配特殊字元邊界(空格或者特殊字元$) 65 ret2 = re.findall(r"i\b","i am a boy,i$") 66 print(ret2) #['i', 'i'] 67 68 #-----search 匹配出第一個滿條件的結果 69 ret = re.search("ab","adfdfdababdab") 70 print(ret.group()) 71 72 # r"" 匹配條件加r(原生字元) 73 a = re.findall(r"\bblow","blow") 74 print(a) 75 b = re.findall("\\\\","\\\\") 76 b1 = re.findall(r"\\","\\\\\\") 77 print(b,b1) 78 79 # () | 80 print(re.search("(ab)+","ababdfdf").group()) 81 print(re.search("(ab)|3","ababd3fdf").group()) 82 83 # ?P<id>\d{3} (分組) 84 print(re.search("(?P<id>\d{3})/(?P<name>\w{3})","12324/csvcs239").group()) #324/csv 85 86 print(re.match("abc","abcweabc").group()) #從字元開始匹配 87 ret = re.split("[j,d]","sdswkdldbds") #分割 88 print(ret) #['s', 'swk', 'l', 'b', 's'] 89 ret = re.sub("a","cv","avbadvdve") #替換 90 print(ret) 91 92 obj = re.compile(r"\.com") #re.compile內添加規則 93 ret1 = obj.findall("www.baidu.com") 94 print(ret1)