python sys模塊的常見用法匯總

2020-10-18 生信修煉手冊
python的內置模塊sys,提供了系統相關的一些變量和函數,在實際開發中,常見的有以下幾種用法

1. 獲取作業系統信息

>>> import sys# 在window上執行>>> sys.platform'win32'
# 在linux上執行>>> sys.platform'linux2'

經典的使用場景, 針對只適用於linux平臺的代碼,通過sys來判斷當前作業系統是否符合要求。

2. 獲取python版本信息

>>> sys.version'3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)]'>>> sys.version_infosys.version_info(major=3, minor=8, micro=2, releaselevel='final', serial=0)>>> ver = sys.version_info>>> ver.major3>>> ver.minor8>>> ver.micro2

對於python版本有限制的代碼,可以通過以上方法來判斷python版本是否符合要求。

3. 獲取編碼方式

>>> sys.getdefaultencoding()'utf-8'

在python3中,默認的編碼方式為utf8, 所以不再需要像python2那樣,自己手動設置編碼格式為utf-8。

4. 標準輸入,輸出和錯誤流

sys模塊提供了變量來表示標準輸入,輸出和錯誤流,列表如下

  1. sys.stdin, 標準輸入流

  2. sys.stdout,標準輸出流

  3. sys.stderr,標準錯誤流

具有文件句柄類似的操作,可以從標準輸入流讀取信息,向標準輸出和標準錯誤流寫入信息,用法如下

>>> sys.stderr.write('stderr info\n')stderr info12>>> sys.stdout.write('stdout info\n')stdout info12

5. 中斷執行

可以通過sys.exit函數來中斷代碼的執行,用法如下

>>> sys.exit()

該函數也可以添加一個參數,默認為0,表示正常退出,其他參數表示非正常退出,支持用字符串來自定義錯誤信息。

6. sys.path

該變量存儲了python尋找模塊的路徑

>>> sys.path['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']

可以在代碼中動態修改sys.path列表中的元素,已達到成功導入某個模塊的目的。

7. sys.module

該變量是一個字典,存儲了已經導入的模塊

>>> import sys>>> sys.modules.keys()dict_keys(['abc', '_signal', 'sitecustomize', 'sys', '_collections_abc', '_weakrefset', '_sitebuiltins', '_weakref', 'sysconfig', 'encodings.utf_8', '__main__', 'apport_python_hook', '_sysconfigdata_m', 'posixpath', 'site', 'readline', 'stat', 'encodings', 'encodings.latin_1', 'zipimport', 'encodings.aliases', '_frozen_importlib_external', 'io', '_frozen_importlib', '_imp', 'atexit', 'os', '_stat', '_sysconfigdata', 'os.path', '_codecs', '_thread', 'posix', 'marshal', 'codecs', '_warnings', 'builtins', 'errno', 'genericpath', 'rlcompleter', '_io'])

8. 獲取命令行參數

sys.argv是一個列表, 該列表存儲了命令行參數,當採用腳本方式運行時,可以方便的處理命令行參數。假設一個python腳本名為test.py,其中的內容如下

import sysfor arg in sys.argv: print(arg)

在作業系統中運行該腳本,會列印命令行參數的內容

> python test.py arg1 arg2test.pyarg1arg2

可以看出,sys.argv的第一個元素是腳本的名字,接下來為傳遞給腳本的命令行參數。對於簡單的腳本編程,用這種方式來捕獲命令行參數是非常方便的。當然,對於命令行參數的傳遞,python還有更加強大的內置模塊argparse, 在實際開發中也更常用該模塊來處理命令行參數,後續在詳細介紹其用法。

·end·

相關焦點

  • Python 標準庫之 sys & copy
    在諸多的 sys 函數和屬性中,我選幾個常用的來說明:1.sys.argvsys.argv 是專門用來向 Python 解釋器傳遞參數的,所以稱之為「命令行參數」,下面先解釋一下什麼是命令行參數:$ python3 --versionPython 3.6.5這裡的 --version 就是命令行參數,如果使用
  • 三分鐘從入門到精通——Python模塊
    中的模塊:假設您正在使用python解釋器。__file__ # module path'C:\\Users\\user\\Desktop\\python_practice\\utils.py'python如何導入模塊:Python使用了一個相對複雜的系統來查找和加載模塊。該sys模塊具有一些屬性,這些屬性定義Python將在哪裡尋找模塊。Python在哪裡尋找進口?
  • 打工人打工魂,打工的必會java調用python的幾種用法
    本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】,經微信公眾號授權轉載,如需轉載與原文作者聯繫圖丨pexelsjava調用python的幾種用法(看這篇就夠了)在java類中直接執行python語句準備工作:創建maven工程,結構如下:到官網https://www.jython.org
  • Python程式設計師最常犯的10個錯誤,你中招了嗎?
    本文供Python高級開發人員參考,Python小白可以參考下面這篇文章:http://www.onlamp.com/pub/a/python/2004/02/05/learn_python.html常見錯誤1:濫用表達式作為函數參數的默認值Python允許開發者指定函數參數的默認值
  • 序列比對在biopython中的處理
    序列比對是生物信息學分析中的常見任務,包含局部比對和全局比對兩大算法,局部比對最經典的代表是blast, 全局比對則用於多序列比對。在biopython中,支持對序列比對的結果進行讀寫,解析,以及運行序列比對的程序。
  • python的int類型專題及常見問題 - CSDN
    待存儲的數值的低位信息放於低位下標, 高位信息放於高下標.比如要保存 112233445566778899 很長,但我們的int只能保存6位(假設):那麼python就會這樣存儲:ob_digit[0] = 778899;ob_digit[1] = 445566;ob_digit[2] = 112233;低位存於低索引下,高位位於高索引下
  • biopython簡介
    biopython和bioperl, biojava項目類似,都是Open Bioinformatics Foundation組織的項目之一,旨在提供一個編程接口,方便生物信息數據的處理。
  • Python神器:找不到模塊怎麼辦?pip安裝器一鍵全搞定
    Python編程中遇到的最常見錯誤之一:找不到對應的模塊!如下提示:一個錯誤從上圖中可以看到運行編寫的python程序時,出現了ModuleNotFoundError的提示,意思python解釋器找不到名為pandas的模塊/庫 !
  • Python 三十大實踐、建議和技巧
    使用以下代碼進行簡單的檢查:if not sys.version_info > (2, 7): # berate your user for running a 10 year # python versionelif not sys.version_info >= (3, 5): # Kindly tell your user (s)he needs to upgrade
  • Python基礎教程(一) - 錯誤和異常
    with語句類似try-except-finally,with語句也是用來簡化代碼的,with語法的基本用法如下:with context_expr [as var]: with_suite。看起來如此簡單,但並不如看上去那麼容易。簡單演示下打開文件的例子。
  • Python的武器庫05:numpy模塊(下)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以有這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • python日期和時間的操作方法匯總
    在python的內置模塊中,時間與日期相關的有以下3個datatimetimecalendar在實際開發中,處理日期和時間主要有以下世界範圍內有一百多個國家實行夏令時制度,每個國家的夏令時起止時間不同,我國從1992年之後,不再實行夏令時下面來看每個模塊的常見用法1. time該模塊主要用來獲取當前時間,並進行格式化,基本用法如下
  • Python內置模塊math介紹
    # 導入模塊import math#dir(module):可以通過它查看任何模塊中所包含的工具
  • 20課零基礎快速學python代碼模塊的定義 使用自己的模塊
    >mytest.hello() #運行mytest模塊中函數hello()shaonian = mytest.Test() #mytest模塊中Test類的實例化import還有另外一種用法,就是import…as… 先看一下下面例子。
  • Python的武器庫04:numpy模塊(上)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以又這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。Python正式由於這些模塊的出現,只要引入這個模塊,調用這個模塊的集成函數,問題迎刃而解;不需要從頭開始,節省了大量的時間。
  • python中常用模塊詳解
    Python中的內置模塊實現)。數據序列化和反序列化處理這類處理是很常見的,比如,一個程序的配置文件,記錄程序的信息,便於下次打開程序將該信息提取出來(信息的持久化存儲);從程序內存中讀取的數據加載到本地後,如果下次該程序還想繼續在別的機器上面使用,只需要提供相同的環境
  • 「python學習手冊-筆記」003.數值類型
    其精度和構建python解釋器的C語言編譯器的雙精度一致.具體的精度信息可以在 sys.float_info中查看,如下圖,詳細解釋請參考文檔 「複數:」 複數由實部和虛部構成,字面量的寫法可以寫成 a+bj的形式或者直接通過 complex(real,imag)來構建 In [2]: import
  • Python基礎教程(一) - 快速入門
    從今天開始學習python,會將學習到的相關知識整理到這裡。今後的所有內容都基於Ubuntu系統中進行的,和其他語言一樣,讓我們先來"Hello World!"吧。Hello world!#!/usr/bin/python為Linux系統下Python解釋器的路徑,通常python解釋器的路徑安裝在/usr/local/bin或/usr/bin目錄下。
  • python之shutil模塊11個常用函數詳解
    作者:小伍哥 來源:AI入門學習shutil是 篇python 中的高級文件操作模塊,與os模塊形成互補的關係,os主要提供了文件或文件夾的新建、刪除、查看等方法,還提供了對文件以及目錄的路徑操作。shutil模塊提供了移動、複製、 壓縮、解壓等操作,恰好與os互補,共同一起使用,基本能完成所有文件的操作。是一個非常重要的模塊。
  • python基礎-bytes和bytearray的用法
    二進位序列類型的用法比較少見,是python中少用的一種序列類型,對於二進位序列類型,大家基本了解即可。編制by偉森leung 喜歡本文章的可以請關注偉森leung,後續有更多python方面的知識分享。標籤: bytes、bytearray的用法, python教程