我在某些脚本中出现奇怪的错误。这些工作与上周一样,具有相同的代码。Python名称错误:名称未定义Linux
我的代码:
import ipaddress
import csv
from csv import DictReader, DictWriter
import operator
import time
import os
import datetime
from datetime import datetime
cnt=1
FMT='%a %b %d %H:%M:%S %Y'
start_time=str(time.strftime("%c", time.localtime()))
forpth=r'/home/path/Geo_Assigned'
forfiles=[os.path.join(forpth, fname) for fname in os.listdir(forpth)if fname.startswith('DC')]
forlat=max(forfiles, key=os.path.getmtime)
mskcmlst=['255.255.255.254', '255.255.255.252', '255.255.255.248', '255.255.255.240', '255.255.255.224', '255.255.255.192', '255.255.255.128', '255.255.255.0', '255.255.254.0', '255.255.252.0', '255.255.248.0', '255.255.240.0', '255.255.224.0', '255.255.192.0', '255.255.128.0', '255.255.0.0', '255.254.0.0', '255.252.0.0', '255.248.0.0', '255.240.0.0', '255.224.0.0', '255.192.0.0', '255.128.0.0', '255.0.0.0']
alphlst=[]
WaitList=[]
cmpmask=ipaddress.ip_address('255.255.255.254')
msk32=ipaddress.ip_address('255.255.255.255')
n=0
with open(forlat, newline='') as fin:
read = DictReader(fin)
for line in read:
line['CIDR']=ipaddress.ip_network(line['CIDR'])
line['Mask']=line['CIDR'].netmask
lwmask=str(line['Mask'])
alphlst.append(line)
print(lwmask)
print("This is lowest mask: {}".format(lwmask))
endnum=mskcmlst.index(lwmask)+1
print("This is endnum {}".format(endnum))
而且我得到的错误:
File "Vtst-linux.py", line 46, in <module>
print("This is lowest mask: {}".format(lwmask))
NameError: name 'lwmask' is not defined
我收到此错误的Linux操作系统Ubuntu版本的Python 3.4.1和3.4.0,但不能在Windows上使用相同的Python版本。我已经在Linux服务器上的虚拟环境中尝试了这一点,并从安装路径运行它,结果相同。输入文件基本上是CIDR表示法中的一堆IP网络。
任何帮助表示赞赏,我对此感到莫名其妙,我试图改变变量名称和其他的东西,它没有帮助。
你的代码注定会失败,因为你定义'lwmask'的'for'循环不会被执行。你确定你使用非空文件作为输入吗? 'print(lwmask)'在linux上产生输出吗? – Bakuriu
是的,就是这样。 – CircuitB0T