我要做的是从一个文件读取一行到一个字符串,然后在另一个文件中搜索包含该字符串的行,并用.split()
解析该行。
我的代码如下所示:
for line in portslist:
marker = line.split()
printername = marker[0]
address = marker[1]
for lines in constantfile:
if address in line: #if the desired address is in the line
lineholder = line
lineholder = lineholder.split()
oldonline = lineholder[4]
oldutc = lineholder[5]
status = lineholder[2]
然而,我收到错误
in readermain oldonline=lineholder[4] IndexError: list index out of range
经过一些故障排除后,似乎我的常量文件中的行永远不会被分配到行。相反,似乎来自文件端口列表的行被分配给行,其仅具有索引2。
我的问题是如何将字符串"address"
分配给行的行,以便我可以解析并使用它?
答案 0 :(得分:3)
我认为您使用的是line
lines
:
for lines in constantfile:
if address in lines: #if the desired address is in the line
lineholder=lines.split()
# etc.
此外,如果constantfile
是文件对象,则在第一次传递外部for
循环后,该迭代器将耗尽。
答案 1 :(得分:0)
你的缩进使得即使“在线地址”评估为假,该块的其余部分也会运行。
其次,来自constantfile的行应该赋给变量“lines”。将相应的代码改为
if address in lines:
lineholder = lines
...
你应该好。
此外,我建议使用一种不那么随意的命名约定,使其明确表示您正在处理来自2个不同文件的行。例如
这样可以减少混乱,并且您的代码更具可读性。