Python 当没有提供argv时,如何打印错误
请帮忙 我有一种情况,我想提供一个IP地址给我的脚本,我想打印一个错误消息时,地址没有提供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 = 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完美配合