python命令行参数 空格_Python - 命令行参数

前言

每个脚本或者命令行程序都可以输入一些参数,通常有两种规范。

短格式,"-"号后面要紧跟一个选项字母,如果还有此选项的附加参数,可以用空格分开,也可以不分开,长度任意,可以用引号。

python main.py -o

python main.py -oa

python main.py -oabcd

python main.py -o abcde

python main.py -o "abcdef"

长格式,"--"号后面要跟一个单词,如果还有些选项的附加参数,后面要紧跟"=",再加上参数,"="号前后不能有空格。

python main.py --conf=conf.json

使用 sys.argv 获取参数

在 Python 可以使用 sys.argv 获取到命令行参数。

第一个参数 sys.argv[0] 表示代码本身文件路径。

所有参数从1开始,返回的结果是一个 list。

#-*- coding: uft-8 -*-

import os,sys

if __name__ == "__main__":

arg1 = sys.argv[1]

arg2 = sys.argv[2]

print(sys.argv)

# ['.\\\\main.py', 'a', 'b', 'd', 'e']

使用 getopt 获取参数

在使用 getopt的时候有如下内容需要注意。

使用切片过滤掉 sys.argv[0] 为脚本名的参数,sys.argv[1:]为要处理的参数列表。

通常会有限验证参数是否合法,这里使用try进行判断。

这里 getopt.getopt() 函数需要两个参数,一个是命令行参数列表,一个是匹配选项。

其中匹配选项 "hi: o:" 表示程序可以匹配三个参数(注意:这串字符中间多了一个空格,因为Markdown语法会替换成Emoji表情,需去掉):

h选项表示开关不带参数如: test.py -h

i:选项表示-i参数后面必须存在参数值如: test.py -i abc.txt

o:选项表示-o参数后面必须存在参数值如: test.py -o def.txt

这里 getopt.getopt() 函数返回两个列表,opts和args,其中opts是一个 tuple 列表,内容是(参数名,参数值),如果没有参数则为空字符串'',例如-h。args的值是格式以外的命令行参数。

Example:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys

import getopt

if __name__ == "__main__":

try:

opts, args = getopt.getopt(sys.argv[1:], "hi:o:", ["help", "input="])

except getopt.GetoptError as e:

print(e)

print("Something wrong...")

sys.exit(2)

print(opts)

print(args)

# 测试输出结果如下

python .\test.py -i abc.txt -o target.txt --help --input=input.txt otherInfo1 otherInof2

[('-i', 'abc.txt'), ('-o', 'target.txt'), ('--help', ''), ('--input', 'input.txt')]

['otherInfo1', 'otherInof2']

其他

2020-12-03 10:20:18 星期四 创建

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值