【问题标题】:Python code is giving errorPython代码给出错误
【发布时间】:2017-08-21 09:57:00
【问题描述】:

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

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))

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

【问题讨论】:

  • 这取决于您传递给 cidrstring 的参数。
  • 你希望这行:(addrString, cidrString) = sys.argv[2] 做什么?你向这个程序传递了什么参数?
  • 好吧!我对此很陌生。如果您可以更新代码或让我知道如何..
  • 如果你写的行正好有 2 个字符,那么你的行将采用第二个命令行参数,并将每个字符放入其中一个变量中。我怀疑那是你的意图。
  • 从朋友那里得到这个代码。我的目的是创建一个代码,我可以在其中提供 IP 地址,它可以为我计算 CIDR 值

标签: python networking cisco cidr


【解决方案1】:

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

您可能在运行脚本时参数太少。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 2015-05-11
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多