sys(简单场景)
获取脚本传递的所有参数,返回一个列表。列表中的所有元素均为脚本传递的参数。
sys.argv[0]
# 脚本传递的第一个参数,固定为脚本名称,可以通过次方式获得脚本名称
可以使用索引依次获得脚本传递的其他参数
import sys
print('第一个参数:%s' % sys.argv[0])
if sys.argv[1].startswith('-'):
c1 = sys.argv[1][1:]
print(c1)
getopt(了解)
# encoding=utf-8
import getopt
import sys
def main(argv):
try:
options, args = getopt.getopt(argv, "hp:i:", ["help", "ip=", "port="])
except getopt.GetoptError:
sys.exit()
for option, value in options:
if option in ("-h", "--help"):
print("help")
if option in ("-i", "--ip"):
print("ip is: {0}".format(value))
if option in ("-p", "--port"):
print("port is: {0}".format(value))
print("error args: {0}".format(args))
if __name__ == '__main__':
main(sys.argv[1:])
argparse(复杂场景)
关键字 | 简介 |
---|---|
name or flags | 参数名或者”-/–”开头的选项,例如foo 或者-f, --foo |
action | 匹配到选项后的行为 |
nargs | 选项跟随的参数个数 |
const | 在某些action 和nargs 下,使用的固定值 |
default | 默认值 |
type | 参数类型 |
choices | 可选的参数值范围 |
required | 选项必选or可选 |
help | 参数描述 |
metavar | 使用说明中显示的参数名 |
dest | 选项最终在解析结果对象中的名字 |
# encoding=utf-8
import argparse
def main(args):
print("--address {0}".format(args.code_address)) # args.address会报错,因为指定了dest的值
print("--flag {0}".format(args.flag)) # 如果命令行中该参数输入的值不在choices列表中,则报错
print("--port {0}".format(args.port)) # prot的类型为int类型,如果命令行中没有输入该选项则报错
print("-l {0}".format(args.log)) # 如果命令行中输入该参数,则该值为True。因为为短格式"-l"指定了别名"--log",所以程序中用args.log来访问
if __name__ == '__main__':
parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.")
parser.add_argument("--address", default=80, help="the port number.", dest="code_address")
parser.add_argument("--flag", choices=['.txt', '.jpg', '.xml', '.png'], default=".txt", help="the file type")
parser.add_argument("--port", type=int, required=True, help="the port number.")
parser.add_argument("-l", "--log", default=False, action="store_true", help="active log info.")
args = parser.parse_args()
main(args)
觉得文章写的不错,可以请喝杯咖啡
- Post link: https://yanxiang.wang/python%E8%8E%B7%E5%8F%96%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.