以下内容适用于Python命令行

CELLULAR='1.2.3.4'
OCTETS=CELLULAR_IP.split('.')
FOURTH_OCTET=OCTETS[3]
T101_IP='10.1.1.'+FOURTH_OCTET
T102_IP='10.1.2.'+FOURTH_OCTET
T103_IP='10.1.3.'+FOURTH_OCTET
T104_IP='10.1.4.'+FOURTH_OCTET


但是在Mako模板中执行此操作会遇到各种麻烦。我要完成的工作是将变量中的IP地址传递给模板,并获取该IP的最后一个八位位组,然后使用它来创建其他4个IP。我以为可以将其放在这样的块中:

<%
OCTETS=CELLULAR_IP.split('.')
FOURTH_OCTET=OCTETS[3]
T101_IP='10.1.1.'+FOURTH_OCTET
T102_IP='10.1.2.'+FOURTH_OCTET
T103_IP='10.1.3.'+FOURTH_OCTET
T104_IP='10.1.4.'+FOURTH_OCTET
%>


但是我收到“列表索引超出范围”错误。我认为这也可能会导致变量作用域设置方面的问题,而我也想尽全力。

我也尝试定义一个函数来执行此操作,但是我有限的Python能力阻止了我的成功。

def get_octets(ip_string):
   try:
       OCTETS=CELLULAR_IP.split('.')
       return FOURTH_OCTET=OCTETS[3]
   except ValueError:
       return 0


关于实现该目标我应该考虑什么?

最佳答案

这行得通,但似乎很麻烦。

   def get_octets(ip_string):
        try:
           return (ip_string).split('.')[3]
        except:
           # if ip_string won’t contain at least three . catch any exception and return -1
           return -1

10-08 02:37