Python技能共建】常用標準庫 r7(Python技能樹)

      網友投稿 676 2022-05-30

      Python 標準庫是什么

      Python 語言提供了非常龐大的組件,本文的呈現方式為羅列,為你描述和提供常用組件,以及其核心用途。

      這些標準庫很多都是用 C 語言進行編寫,所以執行效率都非常高。

      常用標準庫清單如下

      sys

      os

      math

      random

      pikle

      subprocess

      queue

      StringIO

      logging

      json

      time

      datetime

      re

      csv

      threading

      asyncio

      怎么用

      sys

      sys 模塊用于處理 Python 解析器相關的變量和方法,例如獲取命令行參數,退出 Python 程序,獲取輸入輸出相關內容。

      os

      os 模塊,即系統模塊,它提供了用于訪問操作系統相關的功能,os 模塊中的接口有些是特定平臺使用的,所以要特殊記憶。

      主要功能

      系統相關 API

      目錄和文件操作

      執行命令

      管理進程

      math

      math 模塊提供了對 C 標準定義的數學函數,但是這些函數不適用于復數,常用的有 ceil(),floor(),abs(),sin() 等方法。

      一些常量,例如 math.pi ,出場率極高。

      random

      random 模塊用于生成偽隨機數,偽隨機數是由隨機種子根據算法計算而來,處理一些簡單的邏輯隨機數,可以直接使用該模塊。

      pikle

      該模塊是 Python 中用于數據持久化的模塊,可以持久化各種類型的數據,該模塊持久化的數據無法直接讀取,并且僅能在 Python 代碼中進行讀取。

      subprocess

      該模塊主要用于進程操作,你可以使用它執行操作系統級別的命令,學習的時候優先掌握 run() 方法,使用其創建子進程,操作系統命令。

      queue

      隊列模塊,用于將數據存放在內存中,并進行數據交換。

      StringIO

      StringIO 模塊,可以將字符串存儲在內存中,然后像操作文件一樣操作

      logging

      日志模塊。

      json

      操作 JSON 格式數據的模塊。

      time 和 datetime

      時間模塊,time 模塊目前只支持到 2038 年前,如果超過這個時間,使用 datetime 模塊。

      re

      正則表達式處理模塊。

      csv

      csv 文件操作模塊。

      threading

      多線程模塊,非常重要和高級的模塊。

      asyncio

      異步 I/O 模塊。

      time、datetime 時間模塊,calendar 日歷模塊 實戰舉例

      接下來我們介紹一些典型的標準庫,從日期時間庫開始。

      在 Python 中是沒有原生數據類型支持時間的,日期與時間的操作需要借助三個模塊,分別是 time、datetime、calendar。

      time 模塊可以操作 C 語言庫中的時間相關函數,時鐘時間與處理器運行時間都可以獲取。

      datetime 模塊提供了日期與時間的高級接口。

      calendar 模塊為通用日歷相關函數,用于創建數周、數月、數年的周期性事件。

      在學習之前,還有一些術語要補充一下,這些術語你當成慣例即可。這里在 Python 官方文檔中也有相關說明,不過信息比較多,橡皮擦為你摘錄必須知道的一部分。

      epoch(紀元) 是時間開始的點,其值取決于平臺。

      對于 Unix, epoch(紀元) 是 1970年1月1日00:00:00(UTC)。要找出給定平臺上的 epoch ,請使用 time.gmtime(0) 進行查看,例如橡皮擦電腦顯示:

      time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

      術語 紀元秒數 是指自 epoch (紀元)時間點以來經過的總秒數,通常不包括閏秒。 在所有符合 POSIX 標準的平臺上,閏秒都不會記錄在總秒數中。

      程序員中常把 紀元秒數 稱為 時間戳。

      get_clock_info 函數

      該函數獲取時鐘的基本信息,得到的值因不同系統存在差異,函數原型比較簡單:

      time.get_clock_info(name)

      其中 name 可以取下述值:

      monotonic:time.monotonic()

      perf_counter: time.perf_counter()

      process_time: time.process_time()

      thread_time: time.thread_time()

      time: time.time()

      該函數的返回值具有以下屬性:

      adjustable : 返回 True 或者 False。如果時鐘可以自動更改(例如通過 NTP 守護程序)或由系統管理員手動更改,則為 True ,否則為 False ;

      implementation : 用于獲取時鐘值的基礎 C 函數的名稱,就是調用底層 C 的函數;

      monotonic :如果時鐘不能倒退,則為 True ,否則為 False;

      resolution : 以秒為單位的時鐘分辨率( float )。

      import time available_clocks = [ ('clock', time.clock), ('monotonic', time.monotonic), ('perf_counter', time.perf_counter), ('process_time', time.process_time), ('time', time.time), ] for clock_name, func in available_clocks: print(''' {name}: adjustable : {info.adjustable} implementation: {info.implementation} monotonic : {info.monotonic} resolution : {info.resolution} current : {current} '''.format( name=clock_name, info=time.get_clock_info(clock_name), current=func()))

      運行結果如下圖所示。

      上圖顯示橡皮擦的計算機在 clock 與 perf_counter 中,調用底層 C 函數是一致的。

      獲取時間戳

      在 Python 中通過 time.time() 函數獲取紀元秒數,它可以把從 epoch 開始之后的秒數以浮點數格式返回。

      import time print(time.time()) # 輸出結果 1615257195.558105

      時間戳大量用于計算時間相關程序,屬于必須掌握內容。

      獲取可讀時間

      時間戳主要用于時間上的方便計算,對于人們閱讀是比較難理解的,如果希望獲取可讀時間,使用 ctime() 函數獲取。

      import time print(time.ctime()) # 輸出內容:Tue Mar 9 10:35:51 2021

      如何將時間戳轉換為可讀時間,使用 localtime 函數即可。

      localtime = time.localtime(time.time()) print("本地時間為 :", localtime)

      輸出結果為 類型數據,后文將對其進行格式化操作:

      本地時間為 : time.struct_time(tm_year=2021, tm_mon=3, tm_mday=9, tm_hour=10, tm_min=37, tm_sec=27, tm_wday=1, tm_yday=68, tm_isdst=0)

      上述代碼中的時間戳最小值是 0,最大值由于 Python 環境和操作系統決定,我本地 64 位操作系統進行測試的時候,得到的數據如下:

      import time localtime = time.localtime(0) print("時間為 :", localtime) # 時間為 : time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0) localtime = time.localtime(32536799999) print("時間為 :", localtime) # 時間為 : time.struct_time(tm_year=3001, tm_mon=1, tm_mday=19, tm_hour=15, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=19, tm_isdst=0) localtime = time.localtime(99999999999) print("時間為 :", localtime) # OSError: [Errno 22] Invalid argument print(type(localtime))

      單調時間 monotonic time

      monotonic time 從系統啟動開始計時,從 0 開始單調遞增。

      操作系統的時間可能不是從 0 開始,而且會因為時間出錯而回調。

      該函數原型如下,不需要任何參數,返回一個浮點數,表示小數秒內的單調時鐘的值:

      time.monotonic()

      測試代碼如下:

      print("單調時間",time.monotonic()) # 輸出:單調時間 12279.244

      處理器時鐘時間

      time() 函數返回的是紀元秒數(時間戳), clock() 函數返回的是處理器時鐘時間。

      該函數函數的返回值:

      在第一次調用的時候,返回的是程序運行的實際時間;

      在第二次之后的調用,返回的是自第一次調用后到這次調用的時間間隔。

      需要注意的是 Python 3.8 已移除 clock() 函數,用 time.perf_counter() 或 time.process_time() 方法替代。

      t0 = time.clock() # 運行一段代碼 print(time.clock() - t0, "程序運行時間")

      我使用的 Python 版本較高,提示異常如下:

      time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead t0 = time.clock()

      性能計數器 time.perf_counter

      perf_counter() 函數的 epoch (紀元)是未定義的。一般使用該函數都是為了比較和計算,不是為了用作絕對時間,該點需要注意下。

      該函數用于測量較短持續時間的具有最高有效精度的時鐘,包括睡眠狀態消耗的時間,使用兩次調用才會有效。

      測試代碼如下:

      t0 = time.perf_counter() # 運行一段代碼 for i in range(100000): pass print("程序運行時間", time.perf_counter() - t0)

      與其類似的函數有 perf_counter_ns()、process_time()、process_time_ns(),具體可以查詢手冊進行學習,先掌握 perf_counter() 函數即可。

      時間組件

      上文已經涉及了時間組件相關的知識,通過 localtime 得到的 struct_time 類型的數據。

      這里涉及到的函數有 gmtime() 返回 UTC 中的當前時間,localtime() 返回當前時區對應的時間,mktime() 接收 struce_time 類型數據并將其轉換成浮點型數值,即時間戳。

      print("*"*10) print(time.gmtime()) print("*"*10) print(time.localtime()) print("*"*10) print(time.mktime(time.localtime()))

      struct_time 類型包含的內容

      上述代碼返回的數據格式為:

      time.struct_time(tm_year=2021, tm_mon=3, tm_mday=9, tm_hour=12, tm_min=50, tm_sec=35, tm_wday=1, tm_yday=68, tm_isdst=0)

      其中各值可以根據英文含義進行理解 :tm_year 年份(range[1,12]),tm_mon 月份(range[1,12]),tm_mday 天數(range[1,31]),tm_hour 天數(range[0,23]),tm_min 分鐘 (range[0,59]), tm_sec 秒數 (range[0,61]), tm_wday 星期 (range[0,6],0 是星期日), tm_yday 一年中的一天(range[1,366] ),tm_isdst 在夏令時生效時設置為 1,而在夏令時不生效時設置為 0,值-1 表示這是未知的。

      解析和格式化時間

      strptime() 和 strftime() 函數可以使時間值在 struct_time 表示和字符串表示之間相互轉換。

      對于 strftime 函數,其中的參數參考官方即可。

      x = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) print(x)

      這里的學習,沒有什么難度大的點,孰能生巧的知識。

      strptime 函數的應用

      x = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) print(x) # 方向操作,字符串格式化成 time.struct_time struct_time = time.strptime(x, "%Y-%m-%d %H:%M:%S") print(struct_time)

      需要記憶的就是 strftime 與 strptime 函數只有中間的字符不同,一個是 f ,另一個是 p。

      datetime 模塊

      該模塊比 time 模塊高級了很多,并且對 time 模塊進行了封裝,提供的功能更加強大了。

      在 datetime 模塊中,Python 提供了 5 個主要的對象類,分別如下:

      datetime:允許同時操作時間和日期;

      date:只操作日期;

      time:只操作時間;

      timedelta:用于操作日期以及測量時間跨度;

      tzinfo:處理時區。

      date 類

      優先展示部分該類的屬性和方法,都是記憶層面的知識。

      min、max:date 對象能表示的最大、最小日期;

      resolution:date 對象表示日期的最小單位,返回天;

      today():返回表示當前本地日期的 date 對象;

      fromtimestamp(timestamp):根據時間戳,返回一個 date 對象。

      測試代碼如下:

      from datetime import date import time print('date.min:', date.min) print('date.max:', date.max) print('date.resolution:', date.resolution) print('date.today():', date.today()) print('date.fromtimestamp():', date.fromtimestamp(time.time()))

      輸出結果:

      date.min: 0001-01-01 date.max: 9999-12-31 date.resolution: 1 day, 0:00:00 date.today(): 2021-03-09 date.fromtimestamp(): 2021-03-09

      date 對象的屬性和方法

      通過下述代碼創建一個 date 對象:

      d = date(year=2021,month=3,day=9) print(d)

      該對象具備下述屬性和方法:

      d.year:返回年;

      d.month:返回月;

      d.day:返回日;

      d.weekday():返回 weekday,如果是星期一,返回 0;如果是星期 2,返回 1,以此類推;

      d.isoweekday():返回 weekday,如果是星期一,返回 1;如果是星期 2,返回 2,以此類推;

      d.isocalendar():返回格式如(year, wk num, wk day);

      d.isoformat():返回格式如’YYYY-MM-DD’的字符串;

      d.strftime(fmt):自定義格式化字符串,與 time 模塊中的 strftime 類似。

      time 類

      time 類定義的類屬性:

      min、max:time 類所能表示的最小、最大時間。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);

      resolution:時間的最小單位,這里是 1 微秒;

      通過其構造函數可以創建一個 time 對象。

      t = time(hour=20, minute=20, second=40) print(t)

      time 類提供的實例方法和屬性:

      t.hour、t.minute、t.second、t.microsecond:時、分、秒、微秒;

      t.tzinfo:時區信息;

      t.isoformat():返回型如”HH:MM:SS”格式的字符串時間表示;

      t.strftime(fmt):返回自定義格式化字符串。

      datetime 類

      該類是 date 類與 time 類的結合體,很多屬性和方法前文已經介紹,再補充一些比較常用的屬性和方法。

      獲取當前的日期與時間:

      from datetime import datetime dt = datetime.now() print(dt)

      獲取時間戳:

      dt = datetime.now() # 使用 datetime 的內置函數 timestamp() stamp = datetime.timestamp(dt) print(stamp)

      timedelta 類

      通過 timedelta 函數返回一個 timedelta 時間間隔對象,該函數沒有必填參數,如果寫入一個整數就是間隔多少天的的意思。

      # 間隔 10 天 timedelta(10) # 跨度為1 周 timedelta(weeks=1)

      兩個時間間隔對象可以彼此之間相加或相減,返回的仍是一個時間間隔對象。

      【Python技能樹共建】常用標準庫 r7(Python技能樹)

      一個 datetime 對象如果減去一個時間間隔對象,那么返回的對應減去之后的 datetime 對象,然后兩個 datetime 對象如果相減,返回的是一個時間間隔對象。

      更多關于 datetime 類使用的知識,可以參考 官方手冊。

      calendar 模塊(日歷)

      此模塊的函數都是日歷相關的,例如打印某月的字符月歷。

      calendar 模塊定義了 Calendar 類,它封裝了值的計算, 例如給定月份或年份中周的日期。通過 TextCalendar 和 HTMLCalendar 類可以生成預格式化的輸出。

      基本代碼:

      import calendar c = calendar.TextCalendar(calendar.SUNDAY) c.prmonth(2021, 3)

      上述代碼,默認是從周日開始的,輸出結果:

      March 2021 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

      random 隨機函數模塊

      seed 與 random 函數

      seed 函數初始化一個隨機種子,默認是當前系統時間。

      random 函數 生成一個 [0.0,1.0) 之間的隨機小數 。

      具體代碼如下:

      import random random.seed(10) x = random.random() print(x)

      其中需要說明的是 random.seed 函數, 通過 seed 函數 可以每次生成相同的隨機數,例如下述代碼:

      import random random.seed(10) x = random.random() print(x) random.seed(10) y = random.random() print(y)

      在不同的代碼上獲取到的值是不同的,但是 x 與 y 是相同的。

      0.5714025946899135 0.5714025946899135

      getstate() 和 setstate(state)

      getstate 函數用來記錄隨機數生成器的狀態,setstate 函數用來將生成器恢復到上次記錄的狀態。

      # 記錄生成器的狀態 state_tuple = random.getstate() for i in range(4): print(random.random()) print("*"*10) # 傳入參數后恢復之前狀態 random.setstate(state_tuple) for j in range(4): print(random.random())

      輸出的隨機數兩次一致。

      0.10043296140791758 0.6183668665504062 0.6964328590693109 0.6702494141830372 ********** 0.10043296140791758 0.6183668665504062 0.6964328590693109 0.6702494141830372

      randint 和 randrange

      randint 生成一個 [x,y] 區間之內的整數。

      randrange 生成一個 [m,n) 區間之內以 k 為步長的隨機整數。

      測試代碼如下:

      x = random.randint(1,10) print(x) y = random.randrange(1,10,2) print(y)

      這兩個函數比較簡單,randint 函數原型如下:

      random.randint(start,stop)

      參數 start 表示最小值,參數 stop 表示最大值,兩頭都是閉區間,也就是 start 和 stop 都能被獲取到。

      randrange 函數原型如下:

      random.randrange(start,stop,step)

      如果函數調用時只有一個參數,默認是從 0 到該參數值,該函數與 randint 區別在于,函數是左閉右開,最后一個參數是步長。

      查閱效果,可以復制下述代碼運行:

      for i in range(3): print("*"*20) print(random.randrange(10)) print(random.randrange(5,10)) print(random.randrange(5,100,5))

      getrandbits(k) 和 choice(seq)

      getrandbits 生成一個 k 比特長的隨機整數,實際輸出的是 k 位二進制數轉換成的十進制數。

      choice 從序列中隨機選擇一個元素。

      x = random.getrandbits(5) print(x) # 生成的長度是 00000-11111

      getrandbits(k) 函數可以簡單描述如下:輸出一個

      [

      0

      ,

      2

      k

      ?

      1

      ]

      [0,2^k-1]

      [0,2k?1] 范圍內一個隨機整數,k 表示的是 2 進制的位數。

      choice 就比較簡單了,從列表中返回一個隨機元素。

      import random my_list = ["a", "b", "c"] print(random.choice(my_list))

      shuffle(seq) 和 sample(pop,k)

      shuffle 函數用于將序列中的元素隨機排序,并且原序列被修改。

      sample 函數用于從序列或者集合中隨機選擇 k 個選擇,原序列不變。

      my_list = [1,2,3,4,5,6,7,8,9] random.shuffle(my_list) print(my_list)

      shuffle 函數只能用于可變序列,不可變序列(如元組)會出現錯誤。

      my_list = ["夢想", "橡皮擦", 1, 2, [3, 4]] print(my_list) ls = random.sample(my_list, 4) print(ls)

      uniform(a,b) 、betavariate 和 triangular 函數

      uniform 生成一個 [a,b] 之間的隨機小數,采用等概率分布。

      betavariate 生成一個 [0,1] 之間的隨機小數,采用 beta 分布。

      triangular 生成一個 [low,high] 之間的隨機小數,采用三角分布。

      在使用 uniform 時候需要注意,如果 a

      for i in range(3): print(random.uniform(4, 1))

      其它分布隨機函數

      以下都是生成隨機數的方法,只是底層核心算法不同。

      、、、、、、、。

      expovariate:生成一個 (0,∞) 之間的隨機整數,指數分布;

      gammavariate:采用 gamma 分布;

      gauss:采用高斯(正太)分布;

      lognormvariate:對數正太分布;

      normalvariate:正太分布;

      vonmisesvariate:馮米賽斯分布;

      paretovariate:帕累托分布;

      weibullvariate:韋伯分布。

      os 庫

      在 Python 中 os 庫提供了基本的操作系統交互功能,該庫下包含大量與文件系統、操作系統相關的函數,通過 dir 函數可以查看。

      ['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']

      內容太多,通過截圖查閱比較清晰。

      這些函數主要分為幾類。

      路徑操作:os.path 子庫,處理文件路徑及信息;

      進程管理:啟動系統中其它程序;

      環境參數:獲得系統軟硬件信息等環境參數。

      os 庫路徑操作

      os.path 在 os 庫中用于提供操作和處理文件路徑相關函數,常見的函數清單如下:

      以上函數的使用過程比較容易理解,導入模塊之后,調用即可。

      模塊導入使用下述方式:

      import os.path # import os.path as op variate = os.path.abspath(__file__) print(variate)

      函數的參數都是 path,在傳入的時候,特備要注意原生字符串的應用,還有要區分絕對路徑和相對路徑的問題。

      由于 path 相關的庫比較簡單,每個內容都嘗試一遍即可掌握,其它內容可以在 手冊 進行學習。

      os 庫進程管理

      該內容主要用于在 Python 中執行程序或命令 Command,函數原型為:

      os.system(command)

      例如,在 Python 中喚醒畫板程序。

      os.system("c:\windows/system32/mspaint.exe")

      除了 system 函數以外,還有一個 os.exec 函數族相關知識。具體可以查看下述函數的用法:

      os.execl(path, arg0, arg1, …)

      os.execle(path, arg0, arg1, …, env)

      os.execlp(file, arg0, arg1, …)

      os.execlpe(file, arg0, arg1, …, env)

      os.execv(path, args)

      os.execve(path, args, env)

      os.execvp(file, args)

      os.execvpe(file, args, env)

      這些函數都將執行一個新程序,以替換當前進程。

      os 庫運行環境相關參數

      環境參數顧名思義就是改變系統環境信息,或者理解為 Python 運行環境相關信息。

      通過下述屬性,可以獲取環境變量:

      os.environ

      如果希望獲取操作系統類型,使用 os.name,目前只有 3 個值:分別是 posix , nt , java

      函數部分,主要掌握的函數有:

      os.chdir(path):修改當前程序操作的路徑;

      os.getcwd():返回程序運行的路徑;

      os.getlogin():獲取當前登錄用戶名稱;

      os.cpu_count():獲得當前系統的 CPU 數量;

      os.urandom(n):返回一個有 n 個 byte 長的一個隨機字符串,用于加密運算。

      sys 庫

      該庫主要維護一些與 Python 解釋器相關的參數變量和方法。

      常見屬性如下

      sys.argv

      獲取命令行參數列表,第一個元素是程序本身。

      使用方式如下:

      import sys print(sys.argv)

      接下來通過控制臺運行 python 程序時,需要攜帶參數,下述代碼 312.py 是 python 文件名,1、2、3 是后綴的參數。

      python 312.py 1 2 3

      執行程序之后,得到的結果為:

      ['312.py', '1', '2', '3']

      第一個是文件名,后面依次是傳遞進來的參數。

      sys.platform

      獲取 Python 運行平臺的信息,結果比 os.name 要準確。

      sys.path

      獲取 PYTHONPATH 環境變量的值,一般用作模塊搜索路徑。

      import sys print(sys.path)

      sys.modules

      以字典的形式獲取所有當前 Python 環境中已經導入的模塊。

      sys.stdin,sys.stdout,sys.stderr

      sys.stdin , sys.stdout ,sys.stderr 變量包含與標準 I/O 流對應的流對象。

      import sys # 標準輸出, sys.stdout.write() 的形式就是 print() 不加'\n' 的形式。 sys.stdout.write("hello") sys.stdout.write("world")

      sys.stdin 標準輸入,等價于 input。

      sys.ps1 和 sys.ps2

      指定解釋器的首要和次要提示符。僅當解釋器處于交互模式時,它們才有定義。具體測試如下:

      PS > python Python 3.7.3 (v3.7.3:xxxxxx, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.ps1 '>>> ' >>> sys.ps1 = "***" ***print("hello") hello

      常見方法如下

      **sys.exit(n) **

      退出 Python 程序,exit(0)表示正常退出。

      當參數非 0 時,會引發一個 SystemExit 異常,可以在程序中捕獲該異常。參數也可以稱為狀態碼。

      sys.getdefaultencoding()、sys.setdefaultencoding() 、sys.getfilesystemencoding()

      sys.getdefaultencoding():獲取系統當前編碼,有的博客中寫默認為 ascii,但是我本地默認為 utf-8;

      sys.setdefaultencoding():設置系統的默認編碼;

      sys.getfilesystemencoding():獲取文件系統使用編碼方式,默認 utf-8。

      sys.getrecursionlimit() 、 sys.setrecursionlimit()

      獲取 Python 的最大遞歸數目和設置最大遞歸數目

      sys.getswitchinterval()、sys.setswitchinterval(interval)

      獲取和設置解釋器的線程切換間隔時間(單位為秒)

      Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格單元格分三塊的方法步驟(excel表格一格怎么分三塊)
      下一篇:一篇文搞懂《AOP面向切面編程》是一種什么樣的體驗?(如何理解aop面向切面編程)
      相關文章
      丁香婷婷亚洲六月综合色| 亚洲高清在线播放| 亚洲av无码乱码国产精品fc2| 亚洲人成网国产最新在线| 久久精品国产亚洲av麻豆小说| 精品国产亚洲一区二区三区| 国产AV无码专区亚洲AV漫画| 亚洲伊人久久大香线蕉综合图片| 久久亚洲高清综合| 亚洲伊人久久精品影院| 亚洲精品tv久久久久久久久| 亚洲AV综合色区无码另类小说| 亚洲精品成人片在线观看精品字幕| 亚洲最大AV网站在线观看| 亚洲国产三级在线观看| 国产V亚洲V天堂无码久久久| 亚洲Av无码精品色午夜 | 亚洲人成影院在线| 亚洲视频在线观看| 亚洲精品韩国美女在线| 亚洲成a人片77777群色| 亚洲人成在久久综合网站| 456亚洲人成在线播放网站| 自拍偷区亚洲国内自拍| 亚洲日韩国产欧美一区二区三区| 亚洲小说图区综合在线| 久久亚洲欧美国产精品| 亚洲国产成人乱码精品女人久久久不卡| 亚洲国产精品无码久久青草 | 亚洲人成网站在线观看青青| 永久亚洲成a人片777777| 九月丁香婷婷亚洲综合色| 亚洲卡一卡2卡三卡4卡无卡三| 久久亚洲国产精品成人AV秋霞 | 亚洲国产中文v高清在线观看| 久久久精品国产亚洲成人满18免费网站 | 亚洲爆乳AAA无码专区| 亚洲XX00视频| 亚洲国产日韩在线视频| 久久久久亚洲AV无码观看| 亚洲日本在线播放|