sys模組
sys模組代表了Python直譯器,主要用於獲取和Python直譯器相關的資訊,其中 sys.argv 可以獲取命令列參數
在Python互動式直譯器中可以先匯入sys模組 import sys,再輸入 dir(sys) 檢視sys模組所包含的全部程式單元(包括變數、函數等),或者 [i for i in dir(sys) if not i.startswith(’_’)] 過濾掉隱藏的單元
常用單元
import sys
print('程式名稱爲:{},第一個參數爲:{},第二個參數爲:{}'.format(sys.argv[0], sys.argv[1], sys.argv[2]))
sys.byteorder:顯示本地位元組序的指示符。如果本地位元組序的大端模式,則該屬性返回big,否則返回little
sys.copyright:該屬性返回與 Python 直譯器有關的版權資訊
sys.executable:該屬性返回 Python 直譯器在磁碟上的儲存路徑
sys.exit():通過引發SystemExit異常來退出程式,將其放在try塊中不能阻止finally塊的執行。
sys.flags:該只讀屬性返回執行Python命令時指定的旗標
sys.getfilesystemencodiing():返回在當前系統中儲存檔案所用的字元集
sys.getrefcount():返回指定物件的參照計數。
sys.getrecursionlimit():返回Python直譯器當前支援的遞回深度。該屬性可通過setrecursionlimit()方法重新設定
sys.getswitchinterval():返回在當前Python直譯器中執行緒切換的時間間隔。該屬性可通過setswitchinterval()函數改變
sys.implementation:返回當前Python直譯器的實現
sys.maxsize:返回Python整數支援的最大值。在32位元平臺上,該屬性值爲 2 ×× 31-1;在64位元平臺上,該屬性值爲 2 ×× 63-1
sys.path:該屬性指定Python查詢模組的路徑列表。程式可通過修改該屬性來動態增加Python載入模組的路徑
sys.platfrom:返回Python直譯器所在的平臺的識別符號
sys.stdin:返回系統的標準輸入流——一個類檔案物件
sys.stdout:返回系統的標準輸出流——一個類檔案物件
sys.stderr:返回系統的錯誤輸出流——一個類檔案物件
sys.version:返回當前Python直譯器的版本資訊
sys.winver:返回當前Python直譯器的主版本號
sys.copyright:返回當前Python直譯器的版權資訊
getopt模組
getopt是對sys.argv獲取的命令列參數進行二次處理。在執行程式時,可能需要根據不同的條件,輸入不同的命令列選項來實現不同的功能,比如 -u 代表後面是使用者,-p 代表後面是密碼。
舉個例子
## fileName: test.py
'''
遇到問題沒人解答?小編建立了一個Python學習交流QQ羣:778463939
尋找有志同道合的小夥伴,互幫互助,羣裡還有不錯的視訊學習教學和PDF電子書!
'''
import sys, getopt
opts, args = getopt.getopt(sys.argv[1:], "hu:", ["help", "file="])
print("opts輸出結果爲", opts)
print("args輸出結果爲", args)
python test.py -h -u root --help --file=file.py file2.py
## 輸出結果
opts輸出結果爲 [('-h', ''), ('-u', 'root'), ('--help', ''), ('--file', 'file.py')]
args輸出結果爲 ['file2.py']
optparse模組
optparse模組主要用來爲指令碼傳遞命令參數,採用預先定義好的選項來解析命令列參數,自動生成幫助資訊,不需要sys.argv
先簡單寫個例子
import optparse
usage="python %prog -u/--user <target user> -p/--password <target password>"
parser=optparse.OptionParser(usage) ## 寫入上面定義的幫助資訊
parser.add_option('-u', '--user',dest='User',type='string',help='target user', default='root')
parser.add_option('-p','--password',dest='Pwd',type='string',help='target password')
options, args=parser.parse_args()
print('options爲', options)
print("使用者名稱爲", options.User)
print("密碼爲", options.Pwd)
print('args爲', args)
add_option參數:
幫助資訊裏面的選項字串都在一個組中,我們可以建立不同的組用來給選項字串分類
import optparse
usage="python %prog -u/--user <target user> -p/--password <target password>"
parser=optparse.OptionParser(usage) ## 寫入上面定義的幫助資訊
parser.add_option('-u', '--user',dest='User',type='string',help='target user', default='root')
parser.add_option('-p','--password',dest='Pwd',type='string',help='target password')
group = optparse.OptionGroup(parser, 'Debug Options') ## 建立group分組
parser.add_option_group(group) ## 把建立的組新增到parser中
group.add_option('-d', '--debug', action='store_true', help='Print debug information')
options, args=parser.parse_args()
action有三種類型:
argparse模組
optparse模組的升級版,optparse被Python2.7和Python3.2棄用,所有有理由相信未來是屬於argparse模組的
編輯幫助資訊
import argparse
parser = argparse.ArgumentParser(description='幫助描述資訊', prog='程式顯示名稱', usage='頂部顯示資訊,會覆蓋prog', epilog='底部顯示資訊') ## 括號裏面可以什麼都不寫,會走預設
parser.parse_args() ## 命令列參數解析後存放的位置
還有一些不常用的參數:
新增命令列參數
'''
遇到問題沒人解答?小編建立了一個Python學習交流QQ羣:778463939
尋找有志同道合的小夥伴,互幫互助,羣裡還有不錯的視訊學習教學和PDF電子書!
'''
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-u', '--user', dest='User', type=str,default='root', help='target User')
parser.add_argument('-s', '--sex', dest='Sex', type=str, choices=['男', '女'], default='男', help='target Sex')
parser.add_argument('-n', '--number', dest='Num', nargs=2, required=True,type=int, help='target Two Numbers')
print(parser.parse_args()) ## 字典的方式接收參數
參數大多數和上面的optparse相同,不同的有: