python內置模塊介紹(一)


 本文主要介紹模塊列表如下:

  1. os
  2. sys
  3. re
  4. time
  5. datetime
  6. random
  7. shutil
  8. subprocess

os模塊 

  1. os.getcwd()                               獲取當前工作目錄
  2. os.chdir("/path/to")                    將目錄切換到/path/to目錄,等價於shell中的cd命令
  3. os.makedirs('path1/path2')        創建多層目錄(可以多層目錄同時不存在),相當於shell中的mkdir -p 命令
  4. os.removedirs("path1/path2")    刪除空目錄,如果目錄不空就會報錯,首先刪除path2目錄,如果path1也變成空目錄了,也會刪除path1,知道所給目錄的第一層(即示例中的path1)停止
  5. os.mkdir("path")                         創建單層目錄path,相當於shell中的mkdir,注:path目錄所在的上一層目錄必須已經存在
  6. os.rmdir("path")                          刪除單層目錄path,相當於shell中的rmdir
  7. os.listdir("path")                          列出指定目錄下的所有文件和子目錄,包括隱藏文件,返回值是列表
  8. os.remove("file")                         刪除單個文件
  9. os.rename("a","b")                      重命名(文件或目錄)
  10. os.stat("a")                                  獲取a(文件或目錄)的所有信息:返回值是一個os.stat_result類
  11. os.system("shell command")      運行shell命令,直接顯示運行結果,返回值是程序執行成功的code,非shell運行結果的返回值,0代表成功,非0失敗

os.path下方法

  1. os.path.abspath(path)                 返回path的絕對路徑
  2. os.path.realpath(path)                 返回path的絕對路徑,和abspath不同的是,如果path是一個連接,返回的是path所連接的絕對路徑
  3. oa.path.split("path")                     將path分割成目錄和文件名,返回值是二元的元祖
  4. os.path.dirname("path")               返回path所在的目錄
  5. os.path.basename("path")           返回path文件名
  6. os.path.exists("a")                        如果a存在,返回True;如果a不存在,返回False;a可以是文件也可以是目錄
  7. os.path.isabs("path")                    如果path是絕對路徑,返回True
  8. os.path.isfile("path")                     如果path是一個存在的文件,返回True。否則返回False
  9. os.path.isdir("path")                      如果path是一個存在的目錄,則返回True。否則返回False
  10. os.path.join(path1[, path2[, ...]])   將多個路徑組合后返回,第一個絕對路徑之前的參數將被忽略
  11. os.path.getsize("a")                      返回a的大小(如果a是文件,就是文件大小;如果a是目錄,則是目錄內inode列表所占空間,而不是目錄內文件所占的空間大小;如果a是符號鏈接,是指鏈接文件的路徑名的字節數)
  12. os.path.getatime("a")                   返回a所指向的文件或者目錄的最后訪問時間
  13. os.path.gettime("a")                     返回a所指向的文件或者目錄的最后權限修改時間
  14. os.path.getmtime("a")                  返回a所指向的文件或者目錄的最后內容修改時間

沒有小括號

  1. os.curdir                                      返回值是".",即當前目錄的相對路徑,注意:沒有小括號
  2. os.pardir                                      返回值是"..", 即上一層目錄的相對路徑,注意:沒有小括號
  3. os.sep                                         輸出操作系統的路徑分隔符,win下為"\\",Linux下為"/",沒有小括號
  4. os.linesep                                   輸出當前操作系統的行終止符,win下為"\t\n",Linux下為"\n",沒有小括號
  5. os.pathsep                                  輸出當前操作系統用於分割文件路徑的字符串,沒有小括號
  6. os.name                                      輸出當前使用平台,win->'nt'; Linux->'posix'
  7. os.environ                                   獲取系統環境變量,返回值是一個類,可以通過返回值的各種方法調用里面的值

sys模塊

  1. sys.argv                                     命令行list數據,第一個元素是程序本身
  2. sys.exit(a)                                  退出程序,如果a是假則正常退出,如果真,則異常退出,並返回a(假可以是0,False,空字符串等;真則不是空的數據)
  3. sys.version                                打印python解釋程序的版本
  4. sys.path                                     返回模塊的搜索路徑,它對應的是一個list類型,可以通過list的方法進行修改
  5. sys.platform                               返回操作系統的名稱
  6. sys.stdout.write("a")                   標准輸出打印a(對應的還有stderr)

re模塊

re模塊的函數介紹

  1. re.match(pattern,string)            從頭開始匹配
  2. re.search(pattern,string)           匹配(如果pattern增加了^,就和match功能一樣)
  3. re.findall(pattern,string)            把所有匹配到的字符以 list形式 返回
  4. re.split(pattern,string)               將string按照pattern分割,返回列表,列表中的元素不包含pattern
  5. re.sub(pattern,replace,string)   將string中的pattern替換成replace

正則表達式符號含義

  1. "."           默認匹配除\n之外的任意一個字符,若指定flag DOTALL,則匹配任意字符,包括換行
  2. "^"          匹配字符開頭,若指定flags MULTILINE,這種(r"^a","\nabc\neee",flags=re.MULTILINE)也可以匹配上(不指定flags,"\nabc\neee"就是一行)
  3. "$"          匹配字符結尾,若指定flags MULTILINE,這種("foo$","bfoo\nsdfsf",flags=re.MULTILINE)也可以匹配上,同上
  4. "*"           匹配*號的字符0次或多次
  5. "+"          匹配一個字符1次或多次
  6. "?"          匹配一個字符0次或1次
  7. "{m}"      匹配一個字符m次
  8. "{m,n}"    匹配前一個字符m到n次(即最少m次,最多n次)
  9. "|"            匹配|左或|右的字符
  10. "(...)"       分組匹配,分組的順序:從左到右,從外到內
    1. 分組還可以細分,普通分組,命名分組,后向引用,前向肯定斷言,后向肯定斷言,前向否定斷言、后向否定斷言
    2. 普通分組,則是通過1,2.....來獲取匹配到信息,如re.search(r"(abc)","abcdefg").group(1)
    3. 命名分組,則是通過給分組命名來獲取匹配到的信息,如(?P<name>正則表達式),這里的命名就是name,通過groupdict("name")函數獲取捕獲值
    4. 其他用的不多
  11. [...]          匹配中擴內的人一個字符,如果中括號前加^(即[^]),代表匹配非中括號內任一個字符
  12. "\A"         只從字符開頭匹配,re.search("\Aabc","alexabc") 是匹配不到的
  13. "\Z"         匹配字符結尾,同$
  14. "\d"         匹配數字[0-9]
  15. "\D"        匹配非數字
  16. "\w"        匹配[A-Za-z0-9]
  17. "\W"       匹配非[A-Za-z0-9]
  18. "\s"         匹配空白字符、\t、\n、\r
  19. "\S"        匹配\s的補集
    1. \d和\D,\w和\W,\s和\S每一對都是對方的補集,一起可以組成全部的字符

time模塊

  • 在time模塊中有3中標示時間的方式:1.時間戳,2.格式化的時間字符串,3.元祖(struct_time,有9個元素)
  • UTC(Coordinated Universal Time,協調世界時),世界標准時間,中國是UTC+8;DST(Daylight Saving Time)夏令時
  • 時間戳(timestamp):通常來說,時間戳表示的是從1970年1月1日0:00:00開始按秒計算的量
  • 元祖(struct_time)有9個元素,tm_year:年份,tm_mon:月,tm_mday:日期,tm_hour:小時,tm_min:分鍾,tm_sec:秒,tm_wday:星期中的第幾天(周一用0表示),tm_yday:一年中的第幾天,tm_isdst:是否為夏令時

函數介紹

  time中各種類型時間的轉換,引用:https://blog.51cto.com/egon09/1840425

 

  1. time.time()                           當前的時間,類型是時間戳(timestamp)
  2. time.sleep(timestamp)         程序睡眠,單位秒
  3. time.gmtime([timestamp])    類型為struct_time;不傳遞參數,當前utc的時間;如果傳遞參數,則為從1970年1月1日0:00:00經過timestamp時間后的utc時間
  4. time.localtime([timestamp])  類型為struct_time;不傳參數,是當前本地的時間;如果傳遞參數,則為從1970年1月1日0:00:00經過timestamp時間后的本地時間
  5. time.asctime([struct_time])   類型為字符串,格式為"'Wed Jul 17 08:40:40 2019'"”;不傳遞參數,解析當前時間;傳遞參數,解析參數時間
  6. time.ctime([timestamp])          類型為字符串,格式為"'Wed Jul 17 08:40:40 2019'"”;不傳遞參數,解析當前時間;傳遞參數,解析參數時間(和上面不同給的是傳遞參數類型不同)
  7. time.strptime(string,format)  返回struct_time類型,將string按照format解析,format格式下面介紹
  8. time.strftime(format[,tuple]   返回字符串,將時間按照format形式轉換為字符串格式,沒有指定tuple time,則默認使用localtime

 

    1. %y 兩位數的年份表示(00-99)
    2. %Y 四位數的年份表示(000-9999)
    3. %m 月份(01-12)
    4. %d 月內中的一天(0-31)
    5. %H 24小時制小時數(0-23)
    6. %I 12小時制小時數(01-12)
    7. %M 分鍾數(00-59)
    8. %S 秒(00-59)
    9. %a 本地簡化星期名稱
    10. %A 本地完整星期名稱
    11. %b 本地簡化的月份名稱
    12. %B 本地完整的月份名稱
    13. %c 本地相應的日期表示和時間表示,返回和time.ctime一樣
    14. %j 年內的一天(001-366)
    15. %p 本地A.M.或P.M.的等價符
    16. %U 一年中的星期數(00-53)星期天為星期的開始
    17. %w 星期(0-6),星期天為星期的開始
    18. %W 一年中的星期數(00-53)星期一為星期的開始
    19. %x 本地相應的日期表示
    20. %X 本地相應的時間表示
    21. %Z 當前時區的名稱 # 亂碼
    22. %% %號本身

 

datetime模塊

  1. datetime.dateime.now()                                                                 返回當前時間,類型是 datetime.datetime,
  2. datetime.timedelta()                                                                       這個函數不單獨使用,要配合now函數,對時間進行加減,比如:datetime.dateime.now() + datetime.timedelta(-3)
    1. timedelta的參數有:days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0

日期的函數還有calendar(日歷)模塊,詳細見:https://docs.python.org/3/library/calendar.html

random模塊

  1. random.random()                           返回浮點型數字,區間為[0.0 1)---不包含1
  2. random.uniform(a,b)                      返回浮點型數字,可自定義區間,[a,b)
  3. random.int(a,b)                              返回整數,區間為[a,b]
  4. random.randrange(a,b)                 返回整數,區間[a,b)區間性質和range函數一樣
  5. random.choice(seq)                      返回seq中的一個元素
  6. random.shuffle(x)                          對x重新洗牌,即打亂順序,x是一個列表

shutil模塊shutil

高級的文件,文件夾處理

  1. shutil.copyfilebj(src,dst)                拷貝文件對象,src和dst必須是文件句柄(即open后的文件句柄)
  2. shutil.copyfile(src,dst)                   拷貝文件,src和dst是文件名稱(調用copyfilebj來實現的)
  3. shutil.copymode(src,dst)               拷貝文件權限,內容、組、用戶均不變,src和dst都是文件,且必須存在
  4. shutil.copystat(src,dst)                   拷貝文件的狀態信息,包括mode,atime,ctime,flags等
  5. shutil.copy(src,dst)                         拷貝文件和權限,src和dst都是文件
  6. shutil.copy2(src,dst)                       拷貝文件和狀態,src和dst都是文件
  7. shutil.copytree(src,dst)                   遞歸拷貝文件
  8. shutil.rmtree(path)                          遞歸刪除文件
  9. shutil.move(src,dst)                        遞歸移動文件

subprocess模塊

直接運行推薦使用run方法,如果使用更高級的可以直接使用Popen接口;如果想得到程序運行結果,推薦使用getstatusoutput(cmd)

  1. subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)
    1. args:標示要執行的命令,必須是一個字符串,字符串參數需要是列表形式,如果shell參數這只為true,那么可以將參數和命令放到一個字符串中,因為它是通過系統的shell執行
      1.   比如:如果有參數,必須是["ls","-al"],沒有參數可以寫"ls";如果shell為True,可以寫成“ls -a
    2. stdin、stdout 和 stderr:子進程的標准輸入、輸出和錯誤。其值可以是 subprocess.PIPE、subprocess.DEVNULL、一個已經存在的文件描述符、已經打開的文件對象或者 None。subprocess.PIPE 表示為子進程創建新的管道。subprocess.DEVNULL 表示使用 os.devnull。默認使用的是 None,表示什么都不做。另外,stderr 可以合並到 stdout 里一起輸出。
    3. timeout:設置命令超時時間。如果命令執行時間超時,子進程將被殺死,並彈出 TimeoutExpired 異常。
    4. check:如果該參數設置為 True,並且進程退出狀態碼不是 0,則彈 出 CalledProcessError 異常。
    5. encoding: 如果指定了該參數,則 stdin、stdout 和 stderr 可以接收字符串數據,並以該編碼方式編碼。否則只接收 bytes 類型的數據。
    6. shell:如果該參數為 True,將通過操作系統的 shell 執行指定的命令。
  2. subprocess.getstatusoutput(cmd)       返回值是一個二元元組,第一個是exitcode(0代表運行成功,其他代表失敗),第二個是運行cmd返回的結果
    1. 類似的還有一個函數subprocess.getoutput(cmd)   只返回運行的結果

剩余部分請參考:python內置模塊介紹(二)         


免責聲明!

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



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