当我尝试将此文件用作routable.txt作为输入时出现此错误
C 10.0.0.0 FastEthernet0 / 0
C 12.0.0.0 Serial0 / 1/0
R 13.0.0.0 12.0.0.2 Serial0 / 1/0
R 14.0.0.0 12.0.0.2 Serial0 / 1/0
R 15.0.0.0 12.0.0.2 Serial0 / 1/0
R 20.0.0.0 12.0.0.2 Serial0 / 1/0
R 25.0.0.0 12.0.0.2 Serial0 / 1/0
data=open('routable.txt')
data.seek(0)
for each_line in data:
print (each_line,end=' ')
(c_r, dip, via, eth)=each_line.split(" ", maxsplit=4)
data.close()
错误是
C 10.0.0.0 FastEthernet0 / 0
追踪(最近一次通话): 文件“C:/Python34/acnrouting.py”,第5行,in (c_r,dip,via,eth)= each_line.split(“”,maxsplit = 4) ValueError:解包需要3个以上的值
答案 0 :(得分:0)
with open('routable.txt') as data:
for line in data:
if not line:
continue # skip empty lines
print(line, end="")
parts = line.split()
if len(parts) == 4:
c_r, dip, via, eth = parts
elif len(parts) == 3:
c_r, dip, eth = parts
else:
print("Bad Line!")
注意:
with
构造是处理打开文件的首选python方式,因为它确保文件句柄在不使用时将被关闭。
data.seek(0)
是不必要的。打开文件时,文件指针始终位于文件的开头。
在stackoverflow上出现的示例输入有空行(空)行。添加了if
语句以确保忽略这些行。
并非所有输入行都有四个元素。有些人有三个。此代码测试有多少元素并正确解压缩。