time,datetime,random,os,sys,hashlib,logging,configparser,re模塊

来源:https://www.cnblogs.com/rise-home/archive/2019/10/06/11628319.html
-Advertisement-
Play Games

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 = b
View 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)




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 年薪50W python視頻 馬哥30天快速入門Python,總共60個視頻 001-Python編程語言歷史及特性002-Python編程語言初接觸003-Python程式文件結構004-準備Python編程環境005-Python編程語言基礎技術框架(1)006-Python編程語言基礎技術框架 ...
  • 0.前言 在當前的行業發展和國際形勢下,讓更多的程式員思考跨平臺編程問題。在眾多的跨平臺開發環境中,Code::Blocks具有獨特的優勢。 近二十年來,跨平臺開發環境曾經如雨後春筍般產生,但是,由於後繼乏力,逐漸銷聲匿跡者頗多。作為程式員,熟悉一個平臺需要消耗大量的精力,把編寫的程式移植到另一個平 ...
  • EXCEPTION_ACCESS_VIOLATION(0xc0000005)eclipse.ini中添加:-XX:CompileCommand=exclude,org.eclipse.jdt.internal.coompiler.parser.TypeConverter::* ...
  • 今天我們來安裝和測試一下php的多併發高性能網路通信擴展,這個擴展是使用C語音開發的,載入到PHP以後,在PHP的層面上實現了多併發非同步通信,模擬了go語音的很多特性,極大的拓寬了PHP的應用場景。 直接使用官網上的那句命令就可以,安裝swoole時可能會出現錯誤和卡住不動,多試幾次就能成功。pec ...
  • 假定有下麵這樣的列表: 編寫一個函數,它以一個列表值作為參數,返回一個字元串。該字元串包含所有表項,表項之間以逗號和空格分隔,併在最後一個表項之前插入 and。例如,將前面的 spam 列表傳遞給函數,將返回'apples, bananas, tofu, and cats'。但你的函數應該能夠處理傳 ...
  • 今日主要內容 正則表達式 logging模塊 一、正則表達式 (一)什麼是正則表達式 1. 正則表達式的定義: 是對字元串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字元串”,這個“規則字元串”用來表達對字元串的一種過濾邏輯。 簡單來說,我們使用正則表達式 ...
  • 由於JDK中提供的ByteBuffer無法動態擴容,並且API使用複雜等原因,Netty中提供了ByteBuf。Bytebuf的API操作更加便捷,可以動態擴容,提供了多種ByteBuf的實現,以及高效的零拷貝機制。 ByteBuf的操作 ByteBuf有三個重要的屬性:capacity容量,rea ...
  • 構建環境 macOS 10.13.6 JDK1.8 IntelliJ IDEA 2018.3.6 (Ultimate Edition) "Spring v5.1.9.RELEASE" Gradle 5.5.1。直接使用brew安裝Gradle 源碼構建 1.源碼導入 2.閱讀Spring源碼下的 i ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...