python標准庫(一) :sys模塊常用方法詳解


一、sys的用處和場景

sys是system的縮寫,用來獲取操作系統和編譯器的一些配置,設置及操作

以下幾個方法在工作面試都幾乎是必問的,很多人知其然不知所以然

現在深入淺出的實踐並學習下這個工作中必用模塊的一些方法

1、sys.argv():

sys.argv就是一個從程序外部獲取參數的橋梁,這個“外部”很關鍵, 因為我們從外部取得的參數可以是多個

sys.argv其實可以看作是一個列表,所以才能用[]下標的方式提取其中的元素。 其第一個元素是程序本身,隨后才依次是外部給予的參數

現在來通過實踐來了解該方法

(1)創建一個.py文件,寫入對應腳本

             

(2)打開cmd,拖入.py文件,進行外部傳參操作

             

            sys.argv[0]下標為0的第一參數返回的是程序本身路徑,后邊才是外部給予的參數

2、sys.path工作中必用的方法

      簡介:sys.path是對 Python 解釋器的系統環境參數的操作,動態的改變 Python 解釋器搜索路徑(划重點)

      sys.path會返回一個路徑列表,sys.path[0]表示的是當前腳本運行目錄

      牢記知識點:python的兩種加載py文件方式,sys.path[0]產生的值會有差異,注意返回列表的第一個值,在工作中注意腳本運行環境,這是個坑

      方式一:直接運行代碼

          

     方式二:作為模塊腳本來運行

           

      牢記知識點:在工作中,我們導入模塊程序會在當前目錄下去搜尋我們想要的模塊,但我們時常要import導入引用第三方模塊,sys.path可以自定義模塊路徑直接調用外部py文件,以便調用

 假設一個第三方demo.py文件臨時存放在E盤,它的功能就是打印輸出 helloworld
sys.path.append("文件路徑") 直接指向搜尋路徑
 直接導入 xxx.py 即可
              

3 、sys.stdin、sys.stdout、sys.stderr

      概念:這三個方法都是文件屬性,對應的方法可以讀、寫、創建文件及編碼操作

     如果需要更好的控制輸出,而print不能滿足需求,sys.stdout,sys.stdin,sys.stderr就是你需要的

     概念:1、Python程序的標准輸入/輸出/出錯流 定義在sys模塊中

                2、python啟動時自動與Shell環境中的標准輸入,輸出,出錯 關聯

   sys.stdin:所有交互式輸入,類似input的方法

   

         

      sys.stdin.readline 和input的區別

         

         可以看到sys.stdin.readline()獲取全部的標准輸入包括換行符,在使用該方法時使用strip方法去掉換行符

         name = sys.stdin.readline().strip('\n')

         牢記知識點:sys.stdin.readline()的優勢

         看上去sys.stdin.readline() 還不如input() 好用,它有一個input沒有的優勢,該方法可以直接限制輸出的字節長度,輸出的字節長度不會超過給定參數,這是在開發中較為常用的功能之一

          

         sys.stdout:標准輸出流

   牢記知識點:sys.stdout:print(obj)其實就是調用sys.stdout.write(obj+’\n’),但sys.stdout涉及到一個重定向的功能

         print把字符打印在屏幕上是通過sys.stdout的默認輸出流,sys.stdout默認映射到打開腳本的窗口,我們可以通過修改sys.stdout的映射關系來改變print的輸出位置,方法如下:

          

         后續所有的print輸入都會寫入到 test.txt內,我們同時想要恢復怎么辦,方法如下:

         

  sys.stderr:返回錯誤的信息,python 程序內報錯信息都基於該方法如圖紅色報錯

             

    牢記知識點:該方法與sys.stdout一樣都可以重定向映射寫入其他文件

    

          

 4、sys.exit():

廢話不多說,來看python 源文檔   

   

         源文檔暴露3個重要基礎知識:

         1、sys.exit()有自己的退出碼,參數為空默認為0

         2、參數可以為任何類型,並且僅僅會拋出SystemExit異常

         3、參數非0就拋出異常,該異常通常由try / finally 來清除操作

       (1)在代碼內添加sys.exit()代碼

                

       (2)cmd從外部執行該腳步並傳參,會發現不再接受第二個參數

 


免責聲明!

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



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