仅在不硬编码值时才会出现IndexError

时间:2017-10-06 13:54:12

标签: python

为什么我一直收到这个错误?我无法解决这个问题。

class Parser:

    def __init__(self):
        self.connect = ""
        self.accept = ""
        self.ipport = ""
        self.customer = ""
        self.iptablestext = open('iptables', 'rb')
    def client(self):
        with open('stunnel.conf', 'rb') as stunnel:
            for line in stunnel:
                if line.startswith('[customer-'):
                    self.customer = (line.split('-')[1].split('-')[0].strip())
                elif line.startswith('accept'):
                    self.accept = (line.split(" = ")[1].strip())
                    MyParser.ip_collector(self.accept)
                elif line.startswith('connect'):
                    self.connect = (line.split(" = ")[1].strip())
                    MyParser.write_to_file()
    def write_to_file(self):
        with open('customer.yml', 'a') as myfile:
            myfile.write(self.customer + ":" + "\n  accept: " + self.accept + "\n  connect: " + self.connect + "\n  ipaddr: " + self.ipport + "\n")
            myfile.close()
    def ip_collector(self, acceptport):
        with open('iptables', 'rb') as iptables:
            for line in iptables:
                if self.accept in line:
                    self.ipport = (line.split(' -s ')[1].split(' -p ')[0].strip())

我正在尝试将'self.accept'值传递给ip_collector函数,以便我可以为每个客户端搜索单独的ip端口文件。但我似乎无法解决为什么每次运行它都会得到

Traceback (most recent call last):
  File "./parserclient.py", line 37, in <module>
    MyParser.clear_output(), MyParser.client()
  File "./parserclient.py", line 18, in client
    MyParser.ip_collector(self.accept)
  File "./parserclient.py", line 30, in ip_collector
    self.ipport = (line.split(' -s ')[1].split(' -p ')[0].strip())
IndexError: list index out of range

当我将接收端口硬编码到ip collectors函数时,它工作正常。

0 个答案:

没有答案