我已经尝试使用Google数小时,并且堆栈溢出来读取IP地址列表并返回网络。 ip address命令在Python shell中有效,但似乎在导入的列表上跳闸了。我尝试剥离新行并以多种不同方式读取文件,但是我一直收到返回错误。我确信这与我读取文件的方式有关,但我无法弄清楚。
这是当前代码。我们称之为修订号4186!
import ipaddress
def process(line):
# Output network with mask bits (192.168.0.0/24)
try:
return ipaddress.IPv4Interface(line).network
except Exception:
return print("FAIL_OR_EMPTY")
with open('ipaddrlong.txt', 'r') as f:
for line in f:
process(line)
,名为的输入文件如下所示。只有数据和换行符(/ n)。
192.168.252.146/24
192.168.252.158/24
192.168.252.203/24
192.168.252.209/24
如果我将返回行更改为简单打印,对我来说看起来不错。
'192.168.252.146/24', '192.168.252.158/24', '192.168.252.203/24', '192.168.252.209/24'
当我从shell尝试命令时,它似乎工作正常:
>>> x="192.168.0.1/24"
>>> ipaddress.IPv4Interface(x).network
IPv4Network('192.168.0.0/24')
但是当我运行脚本时,会返回异常“ FAIL_OR_EMPTY”。
答案 0 :(得分:1)
据我所知,在IP地址后出现空格问题,您必须先使用类似以下内容的字符串:
import ipaddress
def process(line):
# Output network with mask bits (192.168.0.0/24)
try:
return print(ipaddress.IPv4Interface(line).network)
except Exception:
return print("FAIL_OR_EMPTY")
with open('in.txt', 'r') as f:
for line in f:
line = "".join(line.split())
process(line)
我的in.txt看起来像这样
192.168.252.146/24
192.168.252.158/24
192.168.252.203/24
192.168.252.209/24
I'm not an IP adr
192.168.252.209/24
输出
192.168.252.0/24
192.168.252.0/24
192.168.252.0/24
192.168.252.0/24
FAIL_OR_EMPTY
192.168.252.0/24