python的一些內置模塊


整理了幾種python的常用內置模塊. 

 內置函數思維導圖:https://www.processon.com/view/link/5c7902b1e4b0168e4200846a

re模塊

re(regular expression)就是正則表達式英文的縮寫,也就是說python利用正則進行一些查找,替換等工作。

re模塊的方法:

  查找

  findall,匹配所有,每一項都是列表中的一個元素,從大段地內容中找出匹配的項,常用指數5星,缺點是提取出來的數據量如果過大不能及時處理的話,浪費內存。

import re
ret = re.findall("\d+","sajdaijdi123124sad12") print(ret) #['123124', '12']

 search 主要用於表單驗證,返回的是一個正則匹配的結果,只匹配從左到右的第一個。
import re
ret = re.search("\d+","sajdaijdi123124yfcy23423") print(ret.group())  #123124

  group的功能是把匹配結果顯示出來,如果匹配失敗,print(ret)是none,故group(ret)會報錯.

  

  match  從開頭匹配,成功則返回,不成功返回none

import re
ret = re.search("[^\d]+","sjdakjdk123124") print(ret.group())  #sjdakjdk

 

  替換

  sub(正則,要替換的,實施的字符串,替換次數)

  subn()功能和sub沒太大區別 ,就是能返回替換次數.

import re
s = "我很2,你也很2" ret = re.sub("\d","帥",s,1) #如果不寫次數,默認全部 print(ret) #我很帥,你也很2

 

  分割

  split, 和字符串時候使用的方法差不多.注意 被切割的地方會消失不見.

import re
s = "小劉和兄貴1小李和小梅" ret = re.split("\d",s)5[ print(ret) #['小劉和兄貴', '小李和小梅']

 

  進階之compile

  把正則表達式進行預編譯,節省時間

import re
ret = re.compile("\d+") res = ret.findall("jksajd123") print(res) #["123"]

 

  進階之finditer

  返回迭代器,可以通過for循環讀取數據,節省空間.

import re
ret = re.finditer("\d+","sajdkajd123") for i in ret: print(i.group()) #123

 

  在re中正則表達式的分組的使用

例如:在"<a>wuyuetian</a>"中取出"wuyuetian"

#在findall里,為了findall也能順利取到分組中的內容,用()會優先取括號內的內容
import re
s = "<a>wuyuetian</a>" ret = re.findall(">(\w+)<",s) print(ret)

 

#分組的序號規則類似於索引,但是記着是從1開始的
s = "<a>wuyuetian</a>"
ret = re.search("(>)(\w+)(<)",s) print(ret.group(2)) #wuyuetian

 

關於分組命名

  ?P<name>xxx

s = "<a>wuyuetian</a>"
ret = re.search(">(?<contrnt>\w)<",s) print(ret.group(content)

 

time模塊

  time模塊顧名思義,就是和時間相關的模塊.

  在python中時間分為以下幾種:

    1,格式化字符串類型時間 :  2018-08-20 或 2018.8.20等

    2,結構化時間 : 元組類型  型如:time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=15, tm_min=11, tm_sec=34, tm_wday=0, tm_yday=232, tm_isdst=0)

       3,時間戳 , 指的是一個浮點型數字,它代表了從倫敦時間1970年1月1日到現在經歷了多少秒.

 

#結構化時間
print(time.localtime())    #time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=19, tm_min=11, tm_sec=34, tm_wday=0, tm_yday=232, tm_isdst=0)
print(time.localtime().tm_mon)    #8

#格式化時間
print(time.strftime('%Y-%m-%d %H:%M:%S'))    #2018-08-20 19:18:01

#時間戳
print(time.time())    #1534749546.5685184
print

 

  time模塊補充  

上文提到的三種時間表示類型之間能夠相互轉換.

    time.strptime()   ==>   time.mktime()

格式化時間      結構化時間        時間戳

    time.strftime()    <== time.localtime()

 

結構化時間作為樞紐的存在,實現時間表現類型的相互轉換.

 

random模塊

 random是隨機數模塊,比較簡單,方法也比較少.

random.randint()      取隨機整數,包括左右邊界

random.randrange()     取隨機整數,不包括右邊界.  #既然是range  那肯定還有步長,左右的參數.

random.random()       取隨機小數,0-1之間的小數

random.uniform()    取隨機小數,以傳入參數為范圍

random.shuffle()     打亂傳入的容器的內部順序並返回

random.sample()    隨機返回傳入容器內的元素,可以修改參數修改隨機的個數.

random.choice()     隨機返回

 

import random

print(random.random())    #0.626381041530784

print(random.randint(1,2))    #1或2 #注意: 這里必須要傳參數

print(random.randrange(1,5,2))    #1或3    這里的randrange可以當成range理解

print(random.uniform(1,2))    #1.7422664388978308

lst = [1,2,3,4]
random.shuffle(l)    #[3,1,4,2]    #注意:這里是列表的順序被打亂,打印lst才有結果

print(random.sample("1234",3))    #這里的第一個參數可以傳多種容器類的數據類型,第二個參數代表了隨機取出幾個數

print(random.choice("123456"))    #隨機選擇一個 返回,參數和sample的第一個參數性質一樣

 

sys模塊

sys模塊是和python解釋器進行交互的接口,較為容易理解.

sys.argv()    這個算是用的比較多的一個方法了,list,返回的第一個元素是程序本身的路徑,之后的 就是運行程序是輸入的內容.多用於用戶交互.

sys.version  返回解釋器的版本信息.

sys.exit()     正確退出exit(0),異常退出exit(1)

sys.path    返回模塊的搜索路徑

sys.modules()   返回我們所導入的模塊的內存地址,可以當模塊名使用.

 sys.getcheckintval()  查看GIL的切換的指令數.

sys.setrecursionlimit()  查看並能更改遞歸的最大次數.

sys.studin()  獲取標准輸入

sys.studout  獲取標准輸出

 

import  sys
a = sys.argv(1)
if a =="有點小帥":
    print("謝謝")
#命令行輸入  python  (路徑) ,"有點小帥"
#返回 "謝謝"

sys.version    #3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]

sys.path()    #一個路徑

print(sys.modules["time"].time())    #1534754176.2376733  沒錯  返回的是時間戳

 

 
         
import sys  #關於exit()異常處理
try: sys.exit(1) except SystemExit as e: print(e) #1

 

getopt模塊

getopt模塊大家可能見到的比較少,在網上各式各樣的解釋也讓人眼花繚亂,這里說一下我的理解。

getopt模塊有兩個方法,這里主要介紹getopt.getopt()。它的作用其實兩個字就能說明:匹配

getopt.getopt會返回匹配到的命令行參數和參數值組成的元組。

有三個參數:

  1,命令行參數,我們可以通過sys.argv[1:]來獲取,把路徑元素跳過。

  2,短參數的匹配規則。短參數就是 -h,-l,-v這種的,加上 `:`就代表":"左右兩邊的參數有值。

  3,長參數的匹配規則,長參數就是-help,-version,-command這種,加上`=`就代表該參數有值。

有兩個返回值:

  1,匹配到的命令行參數及其值  組成的元組 構成的列表。

  2,未匹配到的命令行參數。

示例代碼:

輸出結果:

 

os模塊

os模塊是和操作系統相關的一個模塊.是和操作系統進行交互的接口.

os.popen() 和 os.system() 都是執行字符串類型的操作系統命令,可以類比eval和exec這兩個內置函數,這兩個內置函數是執行字符串類型的python代碼

os.popen()適合做查看類的工作,如查看"cat"

os.system適合做直接執行不需返回的操作,如刪除"rm"

os.getcwd()        打印當前工作目錄

os.chdir()      切換當前的工作目錄

os.makedirs()     遞歸創建多個文件夾(空)

os.removedirs()    遞歸刪除多個文件夾(空)

os.mkdir()      創建一個文件夾

os.rmdir()       刪除一個文件夾

os.listdir()       列出指定目錄下所有的文件和文件夾

os.remove()      刪除一個文件

os.rename]()       重命名一個文件

os.stat()          獲取信息  #注:os.stat().st_size獲取文件大小

os.path.abspath()  它有兩個功能,把不規范的路徑格式修改成操作系統默認的格式

          能夠給能夠找到的相對路徑修改成絕對路徑

os.path.split()   把文件路徑分為兩段,第二段是一個文件或者文件夾  返回的是一個元組

os.path.dirname() 返回目錄

os.path.basename   返回文件名  這兩個就是os.path.split()的返回值   都是字符串

os.path.exists()  判斷文件或者文件夾是否存在

os.path.isabs()  判斷是否為絕對路徑

os.path.isdir()    判斷是否為文件夾

os.path.isfile()      判斷是否為文件

os.path.join("","")  拼接

os.path.getatime()  返回文件最后的修改時間

os.path.getsize()  查看文件的大小

          注意: 所有的文件夾至少是4096個字節,創建文件夾是64個字節無法用python統計一個文件夾中所有文件的大小    

 

pickle和json序列化模塊

pickle和json都是具有dump,load,jumps,loads

都是類型轉換,但是json更具有局限性,它不能處理集合,字典的key也必須是字符串,等等

pickle就沒這些局限性,並且json的jump和load不能做到連續多次序列化和反序列化.

注意 由於pickle返回的結果是字節,在用dump和load進行文件操作時,要用rb和wb模式打開文件.

 

uuid模塊

  uuid.uuid4()  返回隨機的五組由數字和字母組成的UUID類型的語句,如a8d04eea-191a-4cdc-b4de-0c71f9c463cf , 可以被str強轉.

 

subprocess模塊

subprocess模塊主要是用來執行外部命令的模塊,

 

  1,subprocess.call(),執行命令,並返回執行狀態,其中shell參數為False時,命令需要通過列表的方式傳入,當shell為True時,可直接傳入命令。

 

  2,subprocess.check_call(),增加當返回值不為0時,直接拋出異常。。

 

  3,subprocess.check_output(),它會做兩件事:

 

    · 檢查返回值,如果不為0則代表當前進程執行失敗。

 

    · 返回標准輸出結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM