我在某些腳本中出現奇怪的錯誤。這些工作與上週一樣,具有相同的代碼。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