我创建了以下脚本(Python 版本 2.x)以验证 IP 地址
如果 IP 验证通过,脚本将打印 OK
否则脚本会打印失败
验证非常好,
但我不想打印的是来自异常的错误(参见脚本的 Exe),
我只想打印 OK 或 Fail ,并将标准错误重定向到 null
请告知我的脚本中需要更新什么才能做到这一点?
#!/usr/bin/python
import commands
import subprocess
import os
import re
import socket
def validIP(address):
parts = address.split(".")
if len(parts) != 4:
return False
for item in parts:
if not 0 <= int(item) <= 255:
return False
try:
socket.inet_aton(address)
return True
except socket.error:
return False
f = open('/dev/null', 'w')
sys.stdout = f
f.close()
address = raw_input("Please enter IP address : ")
res = validIP(address)
if res == True:
print"OK"
else:
print "Fail"
执行脚本:(来自Linux red-hat machine version 6)
./Check_IP_Address.py
Please enter IP address : 192.9.200.WRONG
Traceback (most recent call last):
File "./Check_IP_Address.py", line 37, in <module>
res = validIP(address)
File "./Check_IP_Address.py", line 23, in validIP
if not 0 <= int(item) <= 255:
ValueError: invalid literal for int() with base 10: 'WRONG'
最佳答案
根据你的陈述,捕获ValueError异常(exception)会解决你的问题。您不应该只留下 Errors or Exceptions
。你应该直接捕获他们。
try:
if not 0 <= int(item) <= 255:
return False
except ValueError as e:
return False
关于python - 在python中将标准错误输出重定向到/dev/null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32327073/