天才教育網合作機構 > 北京辦公軟件培訓機構 > 北京excel培訓機構 >

天才領路者

歡迎您!
朋友圈

400-850-8622

全國統(tǒng)一學習專線 9:00-21:00

位置:北京辦公軟件培訓資訊 > 北京excel培訓資訊 > 總算領會python如何接收參數

總算領會python如何接收參數

日期:2019-08-25 12:23:21     瀏覽:223    來源:天才領路者
核心提示:在執(zhí)行python代碼的時候,有時候需要傳遞外面的參數進行處理,那么python如何接收參數呢?一起來了解下吧:?python如何接收參數??需要一個模塊?fromsysimportargv?當然也可以直接只導入sys?importsys?
在執(zhí)行python 代碼的時候,有時候需要傳遞外面的參數進行處理,那么python如何接收參數呢?一起來了解下吧: ? python如何接收參數 ?

python如何接收參數

? 需要一個模塊 ? from sys import argv ? 當然也可以直接只導入 sys ? import sys ? 然后使用的時候, 用sys.argv也是可行的 ? import sys ? print "the script name is ", sys.argv[0] ? for num in range(1, len(sys.argv)): ? ? print "parameter %d is %s "% (num, sys.argv[num]) ? 結果如下: ? python test2.py this is a test last_parameter_Success ? the script name is? test2.py ? parameter 1 is this? ? parameter 2 is is? ? parameter 3 is a? ? parameter 4 is test? ? parameter 5 is last_parameter_Success? ? python怎么命令接收參數 ? 1. 簡單使用 ? 需要使用到sys庫里的argv屬性。 ? sys.argv? ?返回一個參數列表 ? len(sys.argv)? ? 返回參數個數(其中*個參數為文件名) ? 文件test.py: ? import sys ? print sys.argv ? 終端輸入: ? python test.py arg1 arg2 ? Output: ? ['test.py', 'arg1', 'arg2'] ? 我們注意到argv[0]表示的是腳本文件名。 ? 2. 接收選項 ? 上面所述的方法對于接收選項無能為力。為了適應這種需求,我們需要使用getopt包。主要使用getopt.gnu_getopt()函數。函數簽名: ? getopt.gnu_getopt(args, options[, long_options]) ? 選項分兩種:有值選項和無值選項。 ? 參數解釋: ? options:? ? 短選項,一個選項一個字母,如果選項后面有‘:’,說明其為有值選項。 ? long_options:? ? 長選項。如果后面有‘=’,說明為有值選項。 ? 文件test.py ? import getopt ? import sys ? opts, args = getopt.gnu_getopt(sys.argv[1:], 'i:o:v', ['input=', 'output_path=', 'version']) ? print opts ? print args ? 終端輸入: ? python test.py arg1 arg2 -i input --output output -v ? 輸出: ? [('-i', 'input'), ('--output_path', 'output'), ('-v', '')] ? ['arg1', 'arg2'] ? python獲取命令行參數的方法 ? 一、getopt模塊 ? ?主要用到了模塊中的函數: ? options, args = getopt.getopt(args, shortopts, longopts=[]) ? 參數args:一般是sys.argv[1:]。過濾掉sys.argv[0],它是執(zhí)行腳本的名字,不算做命令行參數。 ? 參數shortopts:短格式分析串。例如:"hp:i:",h后面沒有冒號,表示后面不帶參數;p和i后面帶有冒號,表示后面帶參數。 ? 參數longopts:長格式分析串列表。例如:["help", "ip=", "port="],help后面沒有等號,表示后面不帶參數;ip和port后面帶冒號,表示后面帶參數。 ? 返回值options是以元組為元素的列表,每個元組的形式為:(選項串, 附加參數),如:('-i', '192.168.0.1') ? 返回值args是個列表,其中的元素是那些不含'-'或'--'的參數。 ? 在命令行運行下述命令: ? python test_getopt.py -i 192.168.0.1 -p 80 123 a ? 或 ? python test_getopt.py -ip=192.168.0.1 --port=80 123 a ? test_getopt.py代碼如下: ? ?1 #encoding=utf-8 ? ?2? ? ?3 import getopt ? ?4 import sys ? ?5? ? ?6 def main(argv): ? ?7? ? ?try: ? ?8? ? ? ? ?options, args = getopt.getopt(argv, "hp:i:", ["help", "ip=", "port="]) ? ?9? ? ?except getopt.GetoptError: ? 10? ? ? ? ?sys.exit() ? 11? ? 12? ? ?for option, value in options: ? 13? ? ? ? ?if option in ("-h", "--help"): ? 14? ? ? ? ? ? ?print("help") ? 15? ? ? ? ?if option in ("-i", "--ip"): ? 16? ? ? ? ? ? ?print("ip is: {0}".format(value)) ? 17? ? ? ? ?if option in ("-p", "--port"): ? 18? ? ? ? ? ? ?print("port is: {0}".format(value)) ? 19? ? 20? ? ?print("error args: {0}".format(args)) ? 21? ? 22 if __name__ == '__main__': ? 23? ? ?main(sys.argv[1:]) ? 運行結果如下: ? test_getopt.py的運行結果 ? ? 二、argparse模塊 ? 用于解析命令行選項和參數的標準模塊。 ? 使用步驟: ? 1: import argparse  #導入模塊 ? 2: parser = argparse.ArgumentParser()  #創(chuàng)建解析對象 ? 3: parser.add_argument()  #向該對象中添加使用到的命令行選項和參數 ? 4: parser.parser_args()  #解析命令行 ? 接下來詳細介紹下方法ArgumentParser和add_argument: ? ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparser.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True) ? 其中的參數都有默認值,當運行程序時由于參數不正確或者當調用parser.print_help()方法時,會打印這些描述信息。一般只需要傳遞參數description。 ? add_argument(name or flags... [, action] [, nargs] [, const] [, default] [, type] [, choices] [, required] [, help] [, metavar] [, dest]) ? 其中的常用參數解釋如下: ? name or flags: 命令行參數名或者選項,如-p, --port ? action: ?     store: 默認的action模式,存儲值到指定變量 ?     store_const: 存儲值在參數的const部分指定,常用來實現非布爾的命令行flag ?     store_true/store_false: 布爾開關。store_true的默認值為False,若命令行有輸入該布爾開關則值為True。store_false相反 ?     append: 存儲值到列表,該參數可以重復使用 ?     append_const: 存儲值到列表,存儲值在參數的const部分指定 ?     count: 統(tǒng)計參數簡寫的輸入個數 ?     version: 輸出版本信息,然后退出腳本 ? nargs: 命令行參數的個數,一般用通配符表示: ?表示只用一個,*表示0到多個,+表示1到多個 ? default: 默認值 ? type: 參數的類型,默認是string類型,還可以是float、int和布爾等類型 ? choices: 輸入值的范圍 ? required: 默認為False,若為True則表示該參數必須輸入 ? help: 使用的幫助提示信息 ? dest: 參數在程序中的對應的變量名稱,如:add_argument("-a", dest="code_name"),在腳本中用parser.code_name來訪問該命令行選項的值 ? 示例腳本test_argparse.py代碼如下: ? ?1 #encoding=utf-8 ? ?2 import argparse ? ?3? ? ?4 def main(args): ? ?5? ? ?print("--address {0}".format(args.code_address))? ? #args.address會報錯,因為指定了dest的值 ? ?6? ? ?print("--flag {0}".format(args.flag))? ?#如果命令行中該參數輸入的值不在choices列表中,則報錯 ? ?7? ? ?print("--port {0}".format(args.port))? ?#prot的類型為int類型,如果命令行中沒有輸入該選項則報錯 ? ?8? ? ?print("-l {0}".format(args.log))? #如果命令行中輸入該參數,則該值為True。因為為短格式"-l"指定了別名"--log",所以程序中用args.log來訪問 ? ?9? ? 10 if __name__ == '__main__': ? 11? ? ?parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.") ? 12? ? ?parser.add_argument("--address", default=80, help="the port number.", dest="code_address") ? 13? ? ?parser.add_argument("--flag", choices=['.txt', '.jpg', '.xml', '.png'], default=".txt", help="the file type") ? 14? ? ?parser.add_argument("--port", type=int, required=True, help="the port number.") ? 15? ? ?parser.add_argument("-l", "--log", default=False, action="store_true", help="active log info.") ? 16? ? 17? ? ?args = parser.parse_args() ? 18? ? ?main(args) ? python如何獲取函數的參數 ? def f(a=1, b=2, c=3): ? print(locals())#在函數內獲取 ? #使用inspect模塊,簡單方便 ? import inspectinspect.getargspec(f) ? #使用f的內置方法#獲取默認值,如果參數名沒有默認值則不在其中: ? print(f.__defaults__)#使用__code__#總參數個數 ? print(f.__code__.co_argcount)#總參數名 ? print(f.__code__.co_varnames) ?
如果本頁不是您要找的課程,您也可以百度查找一下: