python常用函數總結

  • 2019 年 11 月 28 日
  • 筆記

類型轉換函數,作業系統相關的調用,系統相關的資訊模組 ,作業系統相關的調用和操作 import os,操作舉例,用os.path編寫平台無關的程式,文件操作,regular expression 正則表達式 import re

  • 1.常用內置函數:(不用import就可以直接使用)
  •    help(obj) 在線幫助, obj可是任何類型
  •    callable(obj) 查看一個obj是不是可以像函數一樣調用
  •    repr(obj) 得到obj的表示字元串,可以利用這個字元串eval重建該對象的一個拷貝
  •    eval_r(str) 表示合法的python表達式,返回這個表達式
  •    dir(obj) 查看obj的name space中可見的name
  •    hasattr(obj,name) 查看一個obj的name space中是否有name
  •    getattr(obj,name) 得到一個obj的name space中的一個name
  •    setattr(obj,name,value) 為一個obj的name space中的一個name指向vale這個object
  •    delattr(obj,name) 從obj的name space中刪除一個name
  •    vars(obj) 返回一個object的name space。用dictionary表示
  •    locals() 返回一個局部name space,用dictionary表示
  •    globals() 返回一個全局name space,用dictionary表示
  •    type(obj) 查看一個obj的類型
  •    isinstance(obj,cls) 查看obj是不是cls的instance
  •    issubclass(subcls,supcls) 查看subcls是不是supcls的子類
  •    1.1類型轉換函數
  •    chr(i) 把一個ASCII數值,變成字元
  •    ord(i) 把一個字元或者unicode字元,變成ASCII數值
  •    oct(x) 把整數x變成八進位表示的字元串
  •    hex(x) 把整數x變成十六進位表示的字元串
  •    str(obj) 得到obj的字元串描述
  •    list(seq) 把一個sequence轉換成一個list
  •    tuple(seq) 把一個sequence轉換成一個tuple
  •    dict(),dict(list) 轉換成一個dictionary
  •    int(x) 轉換成一個integer
  •    long(x) 轉換成一個long interger
  •    float(x) 轉換成一個浮點數
  •    complex(x) 轉換成複數
  •    max(…) 求最大值
  •    min(…) 求最小值
  •  用於執行程式的內置函數
  •    complie 如果一段程式碼經常要使用,那麼先編譯,再運行會更快。
  • 2.和作業系統相關的調用
  • 2.1 系統相關的資訊模組 import sys
  •    sys.argv是一個list,包含所有的命令行參數.
  •    sys.stdout sys.stdin sys.stderr 分別表示標準輸入輸出,錯誤輸出的文件對象.
  •    sys.stdin.readline() 從標準輸入讀一行 sys.stdout.write(「a」) 螢幕輸出a
  •    sys.exit(exit_code) 退出程式
  •    sys.modules 是一個dictionary,表示系統中所有可用的module
  •    sys.platform 得到運行的作業系統環境
  •    sys.path 是一個list,指明所有查找module,package的路徑.
  • 2.2 作業系統相關的調用和操作 import os
  •    os.environ 一個dictionary 包含環境變數的映射關係 os.environ[「HOME」] 可以得到環境變數HOME的值
  •    os.chdir(dir) 改變當前目錄 os.chdir(『d:\outlook』) 注意windows下用到轉義
  •    os.getcwd() 得到當前目錄
  •    os.getegid() 得到有效組id  os.getgid() 得到組id
  •    os.getuid() 得到用戶id  os.geteuid() 得到有效用戶id
  •    os.setegid os.setegid() os.seteuid() os.setuid()
  •    os.getgruops() 得到用戶組名稱列表
  •    os.getlogin() 得到用戶登錄名稱
  •    os.getenv 得到環境變數
  •    os.putenv 設置環境變數
  •    os.umask 設置umask
  •    os.system(cmd) 利用系統調用,運行cmd命令
  •    2.3操作舉例:
  •      os.mkdir(『/tmp/xx』) os.system(「echo 『hello』 > /tmp/xx/a.txt」) os.listdir(『/tmp/xx』)
  •      os.rename(『/tmp/xx/a.txt』,』/tmp/xx/b.txt』) os.remove(『/tmp/xx/b.txt』) os.rmdir(『/tmp/xx』)
  •      用python編寫一個簡單的shell
  •        #!/usr/bin/python
  •        import os, sys
  •        cmd = sys.stdin.readline()
  •        while cmd:
  •            os.system(cmd)
  •            cmd = sys.stdin.readline()
  • 2.4 用os.path編寫平台無關的程式
  •    os.path.abspath(「1.txt」) == os.path.join(os.getcwd(), 「1.txt」)
  •    os.path.split(os.getcwd()) 用於分開一個目錄名稱中的目錄部分和文件名稱部分。
  •    os.path.join(os.getcwd(), os.pardir, 『a』, 『a.doc』) 全成路徑名稱.
  •      os.pardir 表示當前平台下上一級目錄的字元 ..
  •    os.path.getctime(「/root/1.txt」)  返回1.txt的ctime(創建時間)時間戳
  •    os.path.exists(os.getcwd()) 判斷文件是否存在
  •    os.path.expanduser(『~/dir』) 把~擴展成用戶根目錄
  •    os.path.expandvars(『$PATH』) 擴展環境變數PATH
  •    os.path.isfile(os.getcwd()) 判斷是否是文件名,1是0否
  •    os.path.isdir(『c:Python26temp』) 判斷是否是目錄,1是0否
  •    os.path.islink(『/home/huaying/111.sql』) 是否是符號連接 windows下不可用
  •    os.path.ismout(os.getcwd()) 是否是文件系統安裝點 windows下不可用
  •    os.path.samefile(os.getcwd(), 『/home/huaying』) 看看兩個文件名是不是指的是同一個文件
  •    os.path.walk(『/home/huaying』, test_fun, 「a.c」)
  •      遍歷/home/huaying下所有子目錄包括本目錄,對於每個目錄都會調用函數test_fun.
  •      例:在某個目錄中,和他所有的子目錄中查找名稱是a.c的文件或目錄。
  •        def test_fun(filename, dirname, names): //filename即是walk中的a.c dirname是訪問的目錄名稱
  •            if filename in names: //names是一個list,包含dirname目錄下的所有內容
  •                print os.path.join(dirname, filename)
  •        os.path.walk(『/home/huaying』, test_fun, 「a.c」)
  •  3.文件操作
  •    打開文件
  •      f = open(「filename」, 「r」) r只讀 w寫 rw讀寫 rb讀二進位 wb寫二進位 w+寫追加
  •    讀寫文件
  •      f.write(「a」) f.write(str) 寫一字元串 f.writeline() f.readlines() 與下read類同
  •      f.read() 全讀出來 f.read(size) 表示從文件中讀取size個字元
  •      f.readline() 讀一行,到文件結尾,返回空串. f.readlines() 讀取全部,返回一個list. list每個元素表示一行,包含」n」
  •      f.tell() 返回當前文件讀取位置
  •      f.seek(off, where) 定位文件讀寫位置. off表示偏移量,正數向文件尾移動,負數表示向開頭移動。
  •        where為0表示從開始算起,1表示從當前位置算,2表示從結尾算.
  •      f.flush() 刷新快取
  •    關閉文件
  •      f.close()
  • 4. regular expression 正則表達式 import re
  •    簡單的regexp
  •      p = re.compile(「abc」) if p.match(「abc」) : print 「match」
  •      上例中首先生成一個pattern(模式),如果和某個字元串匹配,就返回一個match object
  •      除某些特殊字元metacharacter元字元,大多數字元都和自身匹配。
  •      這些特殊字元是 。^ $ * + ? { [ ] | ( )
  •    字符集合(用[]表示)
  •      列出字元,如[abc]表示匹配a或b或c,大多數metacharacter在[]中只表示和本身匹配。例:
  •        a = 「.^$*+?{\|()」  大多數metachar在[]中都和本身匹配,但」^[]」不同
  •        p = re.compile(「[「+a+」]」)
  •        for i in a:
  •            if p.match(i):
  •                print 「[%s] is match」 %i
  •            else:
  •                print 「[%s] is not match」 %i
  •        在[]中包含[]本身,表示」[「或者」]」匹配.用[和]表示.
  •        ^出現在[]的開頭,表示取反.[^abc]表示除了a,b,c之外的所有字元。^沒有出現在開頭,即於身身匹配。
  •        -可表示範圍.[a-zA-Z]匹配任何一個英文字母。[0-9]匹配任何數字。
  •        在[]中的妙用。
  •          d [0-9]
  •          D [^0-9]
  •          s [ tnrfv]
  •          S [^ tnrfv]
  •          w [a-zA-Z0-9_]
  •          W [^a-zA-Z0-9_]
  •          t 表示和tab匹配, 其他的都和字元串的表示法一致
  •          x20 表示和十六進位ascii 0x20匹配
  •          有了,可以在[]中表示任何字元。註:單獨的一個」.」如果沒有出現[]中,表示出了換行n以外的匹配任何字元,類似[^n].
  •      regexp的重複
  •        {m,n}表示出現m個以上(含m個),n個以下(含n個).  如ab{1,3}c和abc,abbc,abbbc匹配,不會與ac,abbbc匹配。
  •        m是下界,n是上界。m省略表下界是0,n省略,表上界無限大。
  •        *表示{,} +表示{1,} ?表示{0,1}
  •        最大匹配和最小匹配 python都是最大匹配,如果要最小匹配,在*,+,?,{m,n}後面加一個?.
  •        match object的end可以得到匹配的最後一個字元的位置。
  •          re.compile(「a*」).match(『aaaa』).end()     4  最大匹配
  •          re.compile(「a*?」).match(『aaaa』).end()    0  最小匹配
  •      使用原始字元串
  •        字元串表示方法中用\表示字元.大量使用影響可讀性。
  •        解決方法:在字元串前面加一個r表示raw格式。
  •        a = r」a」 print a 結果是a
  •        a = r」」a」 print a 結果是」a
  •      使用re模組
  •        先用re.compile得到一個RegexObject 表示一個regexp
  •        後用pattern的match,search的方法,得到MatchObject
  •        再用match object得到匹配的位置,匹配的字元串等資訊
  •        RegxObject常用函數:
  •          >>> re.compile(「a」).match(「abab」) 如果abab的開頭和re.compile(「a」)匹配,得到MatchObject
  •          <_sre.SRE_Match object at 0x81d43c8>
  •          >>> print re.compile(「a」).match(「bbab」)
  •          None 註:從str的開頭開始匹配
  •          >>> re.compile(「a」).search(「abab」) 在abab中搜索第一個和re_obj匹配的部分
  •          <_sre.SRE_Match object at 0x81d43c8>
  •          >>> print re.compile(「a」).search(「bbab」)
  •          <_sre.SRE_Match object at 0x8184e18> 和match()不同,不必從開頭匹配
  •          re_obj.findall(str) 返回str中搜索所有和re_obj匹配的部分.
  •            返回一個tuple,其中元素是匹配的字元串.
  •        MatchObject的常用函數
  •          m.start() 返回起始位置,m.end()返回結束位置(不包含該位置的字元).
  •          m.span() 返回一個tuple表示(m.start(), m.end())
  •          m.pos(), m.endpos(), m.re(), m.string()
  •            m.re().search(m.string(), m.pos(), m.endpos()) 會得到m本身
  •          m.finditer()可以返回一個iterator,用來遍歷所有找到的MatchObject.
  •            for m in re.compile(「[ab]」).finditer(「tatbxaxb」):
  •            print m.span()
  •      高級regexp
  •        | 表示聯合多個regexp. A B兩個regexp,A|B表示和A匹配或者跟B匹配.
  •        ^ 表示只匹配一行的開始行首,^只有在開頭才有此特殊意義。
  •        $ 表示只匹配一行的結尾
  •        A 表示只匹配第一行字元串的開頭 ^匹配每一行的行首
  •        Z 表示只匹配行一行字元串的結尾 $匹配第一行的行尾
  •        b 只匹配詞的邊界 例:binfob 只會匹配」info」 不會匹配information
  •        B 表示匹配非單詞邊界
  •        示例如下:
  •          >>> print re.compile(r」binfob」).match(「info 「) #使用raw格式 b表示單詞邊界
  •          <_sre.SRE_Match object at 0x817aa98>
  •          >>> print re.compile(「binfob」).match(「info 「) #沒有使用raw b表示退格符號
  •          None
  •          >>> print re.compile(「binfob」).match(「binfob 「)
  •          <_sre.SRE_Match object at 0x8174948>
  •      分組(Group) 示例:re.compile(「(a(b)c)d」).match(「abcd」).groups()   (『abc』, 『b』)
  •        #!/usr/local/bin/python
  •        import re
  •        x = 「」」
  •        name: Charles
  •        Address: BUPT
  •        name: Ann
  •        Address: BUPT
  •        「」」
  •        #p = re.compile(r」^name:(.*)n^Address:(.*)n」, re.M)
  •        p = re.compile(r」^name:(?P<name>.*)n^Address:(?P<address>.*)n」, re.M)
  •        for m in p.finditer(x):
  •                print m.span()
  •                print 「here is your friends list」
  •                print 「%s, %s」%m.groups()
  •      Compile Flag
  •        用re.compile得到RegxObject時,可以有一些flag用來調整RegxObject的詳細特徵.
  •          DOTALL, S 讓.匹配任意字元,包括換行符n
  •          IGNORECASE, I 忽略大小寫
  •          LOCALES, L 讓w W b B和當前的locale一致
  •          MULTILINE, M 多行模式,隻影響^和$(參見上例)
  •          VERBOSE, X verbose模式

原創文章,轉載請註明: 轉載自URl-team

本文鏈接地址: python常用函數總結

No related posts.

Tags: