朋友圈

400-850-8622

全國(guó)統(tǒng)一學(xué)習(xí)專線 9:00-21:00

位置:北京辦公軟件培訓(xùn)資訊 > 北京excel培訓(xùn)資訊 > 總算領(lǐng)會(huì)python如何接收參數(shù)

總算領(lǐng)會(huì)python如何接收參數(shù)

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

python如何接收參數(shù)

? 需要一個(gè)模塊 ? from sys import argv ? 當(dāng)然也可以直接只導(dǎo)入 sys ? import sys ? 然后使用的時(shí)候, 用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]) ? 結(jié)果如下: ? 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怎么命令接收參數(shù) ? 1. 簡(jiǎn)單使用 ? 需要使用到sys庫(kù)里的argv屬性。 ? sys.argv? ?返回一個(gè)參數(shù)列表 ? len(sys.argv)? ? 返回參數(shù)個(gè)數(shù)(其中*個(gè)參數(shù)為文件名) ? 文件test.py: ? import sys ? print sys.argv ? 終端輸入: ? python test.py arg1 arg2 ? Output: ? ['test.py', 'arg1', 'arg2'] ? 我們注意到argv[0]表示的是腳本文件名。 ? 2. 接收選項(xiàng) ? 上面所述的方法對(duì)于接收選項(xiàng)無(wú)能為力。為了適應(yīng)這種需求,我們需要使用getopt包。主要使用getopt.gnu_getopt()函數(shù)。函數(shù)簽名: ? getopt.gnu_getopt(args, options[, long_options]) ? 選項(xiàng)分兩種:有值選項(xiàng)和無(wú)值選項(xiàng)。 ? 參數(shù)解釋: ? options:? ? 短選項(xiàng),一個(gè)選項(xiàng)一個(gè)字母,如果選項(xiàng)后面有‘:’,說(shuō)明其為有值選項(xiàng)。 ? long_options:? ? 長(zhǎng)選項(xiàng)。如果后面有‘=’,說(shuō)明為有值選項(xiàng)。 ? 文件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獲取命令行參數(shù)的方法 ? 一、getopt模塊 ? ?主要用到了模塊中的函數(shù): ? options, args = getopt.getopt(args, shortopts, longopts=[]) ? 參數(shù)args:一般是sys.argv[1:]。過(guò)濾掉sys.argv[0],它是執(zhí)行腳本的名字,不算做命令行參數(shù)。 ? 參數(shù)shortopts:短格式分析串。例如:"hp:i:",h后面沒(méi)有冒號(hào),表示后面不帶參數(shù);p和i后面帶有冒號(hào),表示后面帶參數(shù)。 ? 參數(shù)longopts:長(zhǎng)格式分析串列表。例如:["help", "ip=", "port="],help后面沒(méi)有等號(hào),表示后面不帶參數(shù);ip和port后面帶冒號(hào),表示后面帶參數(shù)。 ? 返回值options是以元組為元素的列表,每個(gè)元組的形式為:(選項(xiàng)串, 附加參數(shù)),如:('-i', '192.168.0.1') ? 返回值args是個(gè)列表,其中的元素是那些不含'-'或'--'的參數(shù)。 ? 在命令行運(yùn)行下述命令: ? 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:]) ? 運(yùn)行結(jié)果如下: ? test_getopt.py的運(yùn)行結(jié)果 ? ? 二、argparse模塊 ? 用于解析命令行選項(xiàng)和參數(shù)的標(biāo)準(zhǔn)模塊。 ? 使用步驟: ? 1: import argparse  #導(dǎo)入模塊 ? 2: parser = argparse.ArgumentParser()  #創(chuàng)建解析對(duì)象 ? 3: parser.add_argument()  #向該對(duì)象中添加使用到的命令行選項(xiàng)和參數(shù) ? 4: parser.parser_args()  #解析命令行 ? 接下來(lái)詳細(xì)介紹下方法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) ? 其中的參數(shù)都有默認(rèn)值,當(dāng)運(yùn)行程序時(shí)由于參數(shù)不正確或者當(dāng)調(diào)用parser.print_help()方法時(shí),會(huì)打印這些描述信息。一般只需要傳遞參數(shù)description。 ? add_argument(name or flags... [, action] [, nargs] [, const] [, default] [, type] [, choices] [, required] [, help] [, metavar] [, dest]) ? 其中的常用參數(shù)解釋如下: ? name or flags: 命令行參數(shù)名或者選項(xiàng),如-p, --port ? action: ?     store: 默認(rèn)的action模式,存儲(chǔ)值到指定變量 ?     store_const: 存儲(chǔ)值在參數(shù)的const部分指定,常用來(lái)實(shí)現(xiàn)非布爾的命令行flag ?     store_true/store_false: 布爾開(kāi)關(guān)。store_true的默認(rèn)值為False,若命令行有輸入該布爾開(kāi)關(guān)則值為True。store_false相反 ?     append: 存儲(chǔ)值到列表,該參數(shù)可以重復(fù)使用 ?     append_const: 存儲(chǔ)值到列表,存儲(chǔ)值在參數(shù)的const部分指定 ?     count: 統(tǒng)計(jì)參數(shù)簡(jiǎn)寫的輸入個(gè)數(shù) ?     version: 輸出版本信息,然后退出腳本 ? nargs: 命令行參數(shù)的個(gè)數(shù),一般用通配符表示: ?表示只用一個(gè),*表示0到多個(gè),+表示1到多個(gè) ? default: 默認(rèn)值 ? type: 參數(shù)的類型,默認(rèn)是string類型,還可以是float、int和布爾等類型 ? choices: 輸入值的范圍 ? required: 默認(rèn)為False,若為True則表示該參數(shù)必須輸入 ? help: 使用的幫助提示信息 ? dest: 參數(shù)在程序中的對(duì)應(yīng)的變量名稱,如:add_argument("-a", dest="code_name"),在腳本中用parser.code_name來(lái)訪問(wèn)該命令行選項(xiàng)的值 ? 示例腳本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會(huì)報(bào)錯(cuò),因?yàn)橹付薲est的值 ? ?6? ? ?print("--flag {0}".format(args.flag))? ?#如果命令行中該參數(shù)輸入的值不在choices列表中,則報(bào)錯(cuò) ? ?7? ? ?print("--port {0}".format(args.port))? ?#prot的類型為int類型,如果命令行中沒(méi)有輸入該選項(xiàng)則報(bào)錯(cuò) ? ?8? ? ?print("-l {0}".format(args.log))? #如果命令行中輸入該參數(shù),則該值為True。因?yàn)闉槎谈袷?-l"指定了別名"--log",所以程序中用args.log來(lái)訪問(wèn) ? ?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如何獲取函數(shù)的參數(shù) ? def f(a=1, b=2, c=3): ? print(locals())#在函數(shù)內(nèi)獲取 ? #使用inspect模塊,簡(jiǎn)單方便 ? import inspectinspect.getargspec(f) ? #使用f的內(nèi)置方法#獲取默認(rèn)值,如果參數(shù)名沒(méi)有默認(rèn)值則不在其中: ? print(f.__defaults__)#使用__code__#總參數(shù)個(gè)數(shù) ? print(f.__code__.co_argcount)#總參數(shù)名 ? print(f.__code__.co_varnames) ?
如果本頁(yè)不是您要找的課程,您也可以百度查找一下: