python 输入参数获取不到_Python获取命令行参数后进行处理的时候为什么不能进到else中,请大神赐教哈...

真正的原因是当你不带参数运行脚本时, opts, args = getopt.getopt(sys.argv[1:], "hi:n:o:s:d:")这句得到的opts = [], 即一个空的list且并不像楼上说的会报异常错误, 而对于一个空的list来说, 你这句for op,value in opts:是不会进入到for循环中去的, 自然也不会触发else的逻辑。

我们做个测试:

lst = []

for i in lst:

if i:

print(i)

else:

print("hello")

# 结果为空, for循环并没有执行

lst = [0]

for i in lst:

if i:

print(i)

else:

print("hello")

# 列表非空, 可迭代, 正常进入else

所以你这代码应该改写为:

# coding=utf8

import getopt

import sys

def usage():

print("{}: '-i p_case_dir -n p_case_id_str -o p_out_dir -s p_src_conn -d p_dst_conn'".format(sys.argv[0]))

def main():

try:

opts, args = getopt.getopt(sys.argv[1:], "hi:n:o:s:d:")

except getopt.GetoptError as e:

print(e)

usage()

sys.exit(1)

if opts:

for op, value in opts:

if (op == "-i"):

p_case_dir = value

elif (op == "-n"):

p_case_id_str = value

elif (op == "-o"):

p_out_dir = value

elif (op == "-s"):

p_src_conn = value

elif (op == "-d"):

p_dst_conn = value

else:

usage()

sys.exit(1)

else:

usage()

sys.exit(1)

if __name__ == "__main__":

main()

另外从Python 2.7开始, 更为灵活方便的argparse被纳入标准库, 所以建议用来代替getopt

官网manual

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值