使用python中另一个文件的输入搜索文件

时间:2012-08-30 21:03:03

标签: python file

我要做的是从一个文件读取一行到一个字符串,然后在另一个文件中搜索包含该字符串的行,并用.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"分配给行的行,以便我可以解析并使用它?

2 个答案:

答案 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个不同文件的行。例如

  • line - > portline
  • marker - > portlinesplit
  • 行 - > constline
  • lineholder - > constlinesplit

这样可以减少混乱,并且您的代码更具可读性。