Python 当没有提供argv时,如何打印错误

Python 当没有提供argv时,如何打印错误,python,python-2.7,Python,Python 2.7,请帮忙 我有一种情况,我想提供一个IP地址给我的脚本,我想打印一个错误消息时,地址没有提供 ip = sys.argv[1] if len(ip) == 13: print "IP address format correct" else: print "wrong IP format" exit() 我知道我将不得不努力的长度,但这是为以后 您可以检查提供的args的长度是否等于2。第一个参数

请帮忙

我有一种情况,我想提供一个IP地址给我的脚本,我想打印一个错误消息时,地址没有提供

    ip = sys.argv[1]


    if len(ip) == 13:
            print "IP address format correct"
    else:
            print "wrong IP format"
            exit()

我知道我将不得不努力的长度,但这是为以后

您可以检查提供的
args
的长度是否等于2。第一个参数始终是存储在
argv[0]
的文件名。因此,您必须检查长度是否为2或更多

试试这个:

if len(sys.argv) < 2:
    print("Please provide an IP to proceed.")
    sys.exit(0)

ip = sys.argv[1]


if len(ip) == 13:
    print "IP address format correct"
else:
    print "wrong IP format"
    exit()
如果len(sys.argv)<2:
打印(“请提供IP以继续。”)
系统出口(0)
ip=sys.argv[1]
如果len(ip)==13:
打印“IP地址格式正确”
其他:
打印“错误的IP格式”
退出()
以下代码:

import sys

if __name__ == "__main__":
    # print the given IP to the script
    ip = sys.argv[1]
    print(ip)

    # your condition
    if len(ip) == 13:
        print("IP address format is correct")
    else:
        print("wrong IP format")
        exit()
保存为脚本
test.py
,并将脚本调用为:

python3 test.py 255.255.255.0
或者在Python2.X中

python test.py 255.255.255.0

将对IP输入示例执行更多而不是更少的操作,例如:
255.255.255.0

使用
argparse
,并让它为您处理此操作

import argparse
import ipaddress


p = argparse.ArgumentParser()
p.add_argument("address", type=ipaddress.ip_address)

args = p.parse_args()  # Without an argument, parse sys.argv[1:]

ipaddress
模块将负责验证IP地址。在Python2.7中,您可以安装
ipaddr
,并使用它,只需稍作调整。(
ipaddress
只是从Python 3.3开始的标准库中包含的
ipaddr
的一个稍加修改的版本。)

尝试此操作,它将检查ip是否作为输入,并验证它

import re
import sys

#check if ip is given
if len(sys.argv) == 2:
    # regex checking
    s = re.compile('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
    # your input
    ip = sys.argv[1]
    if s.match(ip):
        print("{} is valid".format(ip))
    else :
        print("{} is not valid".format(ip))
else:
    print("input ip address")

您可以查看一下这个概念。
如果len(sys.argv)<2:raisevalueerror(“需要IP地址!”)
,或者使用
print
sys.exit
上次我计算IP地址时,IP地址的长度为7到15个字符,这仅适用于十进制点表示法中的IPv4地址。return SyntaxError:“return”在函数外OK我以为所有这些代码都可能在函数内<代码>返回不能在任何函数之外使用。将其更改为
exit()
,正如您在错误
ip
format.ip=sys.argv[1]索引器的情况下所做的那样:列表索引超出范围我不确定这是如何发生的。但是尝试用
sys.exit(0)
更改
exit()
。太好了。干杯:)ip=sys.argv[1]索引器错误:列出超出范围的索引以
python3 test.py 255.255.255.0运行它。您给出的错误就像您没有向脚本中添加任何输入参数一样。我必须使用python 2.7不幸地将其作为
python test.py 255.255.255.0运行,并且它与python 2.7完美配合