python 从命令行 外部传入参数 sys.argv [ ] 与parser.add_argument ( ) 的用法

参考自: python中sys.argv[]的用法.

1. sys.argv [ ] 的用法

sys.argv [ ] 说白了就是一个从程序外部获取参数的桥梁。因为从外部取得的参数可以是多个,所以获得的是一个列表( list ),也就是说sys.argv 其实可以看作是一个列表,所以才能用 [ ] 提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。

下面我们通过一个极简单的 test.py 程序的运行结果来说明它的用法。

 #test.py
 import sys
 a=sys.argv[0]
 print(a)

将test.py保存在c盘的根目录下。

在程序中找到 ‘运行’->点击->输入"cmd"->回车键 进入控制台命令窗口(如下图),先输入cd c:\ (作用是将命令路径改到c盘根目录),然后输入test.py运行我们刚刚写的程序:
在这里插入图片描述
得到的结果是C:\test.py,这就是 0指代码本身(即此 .py程序)本身的意思。

然后我们将代码中0改为1 :

a=sys.argv[1]

保存后,再从控制台窗口运行,这次我们加上一个参数,输入:test.py what
在这里插入图片描述

得到的结果就是我们输入的参数what,看到这里你是不是开始明白了呢。

那我们再把代码修改一下:

a=sys.argv[2:]

保存后,再从控制台窗台运行程序,这次多加几个参数,以空格隔开:

test.py a b c d e f

得到的结果为[‘b’, ’c’, ’d’, ’e’, ’f’]

总结:sys.argv [ ] 其实就是一个列表,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,从外部来运行程序并给出参数。

2. sys.arg [ ]与parser.add_argument ( ) 配合使用

了解了的sys.arg [ ] 的用法,其实我们也可以不用每次运行前都带上参数,或者每次打开 pycharm 的时候都要配置参数。也可以写在程序里,这就用到了系统预置的argparse包,

具体步骤:
1、新建一个test_main.py文件,并导入argparse和sys包。

2、定义一个参数传递函数:

def parse_arguments(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument('--name',type = str , default = 'Tom' )
    parser.add_argument('--age',  default='14')
    return parser.parse_args(argv)

parser.add_argument(’–名字’,type = str , default= ‘值’ )的用法:相当于传了一个字典类型的数据

–名字:字典的key。

值:字典的值

另外,parser.add_argument还有几个常用的属性:

1)type =str,默认为str,也可以指定为float int等类型

2)help:用于显示模块的信息(相当于注释。),当在命令行输入python **.py --help时,可以显示对应的信息。

比如,加上help属性:
在这里插入图片描述
在命令行运行上述命令,显示:
在这里插入图片描述

3、定义一个主函数调用上述函数,并写好主函数的入口:

def main(args):
    print(args.name)
    print(args.age)
 
if __name__ == '__main__':
    main(parse_arguments(sys.argv[1:]))

最终代码如下:

import sys
import argparse

def parse_argument(argv):
	""" 参数传递函数 """
	parser = argparse.ArgumentParser()
	parser.add_argument('--name',type=str, default='Tom',help='这保存的是姓名信息')
	parser.add_argument('--age',default='18',help='这保存的是年龄信息')
	return parser.parse_args(argv)

def main(args):
	print(args.name)
	print(args.age)

if __name__ == '__main__':
	main(parse_argument(sys.argv[1:]))

运行这个程序:

D:\software_install_position\anaconda3\envs\tf_1_13_1_py376\python.exe F:/Python_Code/sys_arg_note/sys_arg_test_main.py
Tom
18

Process finished with exit code 0

证明我们添加的两个参数已经在运行的时候被导入了进去。(此时给的参数是默认的 default)

参考:

python中sys.argv[]的用法.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值