Python代码给出了错误

时间:2017-08-21 09:57:01

标签: python networking cisco cidr

我的代码如下。 在运行时它给了我以下错误:

import sys
import numbers
import idlelib
import importlib        


(addrString, cidrString) = sys.argv[1].split('/')


 addr = addrString.split('.')
 cidr = int(cidrString)


 mask = [0, 0, 0, 0]
 for i in range(cidr):
 mask[i/8] = mask[i/8] + (1 << (7 - i % 8))


 net = []
 for i in range(4):
 net.append(int(addr[i]) & mask[i])


  broad = list(net)
  brange = 32 - cidr
  for i in range(brange):
  broad[3 - i/8] = broad[3 - i/8] + (1 << (i % 8))


   print ("Address:   ") , addrString
   print ("Netmask:   ") , ".".join(map(str, mask))
   print ("Network:   ") , ".".join(map(str, net))
   print ("Broadcast: ") , ".".join(map(str, broad))

得到错误: Traceback(最近一次调用最后一次): 文件“C:\ Users \ solut \ Desktop \ subnet.py”,第7行,中 (addrString,cidrString)= sys.argv [2] IndexError:列表索引超出范围

2 个答案:

答案 0 :(得分:0)

sys.argv是命令行上的(字符串)参数列表。

您可能只使用太少的参数来运行脚本。

答案 1 :(得分:0)

在发送多个参数之前,您必须首先验证sys.argv

import sys
if len(sys.argv) >= 2:
   addrString = sys.argv[1]
   cidrString = sys.argv[2]
   print(addrString)
   print(cidrString)