Python中的IndexError消息使用'with'语句

时间:2012-03-08 01:15:42

标签: python

我有一个分配给函数定义的输入和输出变量来从GUI中获取条目,输入(读取)一个.txt文件并创建(写入)一个输出.txt文件,该文件将拆分一些数据列,具体如下: / p>

def runTransferDialog():
    e1, e2 = StringVar(), StringVar()
    PackDialog(e1, e2)
    input, output = e1.get(), e2.get()         # GUI entries assigned to variables
    if input !='' and output !='':
        with open(input, 'r') as input1:        # read input .txt file
            with open(output, 'w') as output1:   # write input .txt file
                for line in input1:
                    columns = line.strip().split()
                    output1.write('{:8}{:8}\n'.format(columns[0], columns[3])

编译我得到“IndexError:列表索引超出范围”,输出.txt文件确实生成但是没有数据列。发生了什么事?

2 个答案:

答案 0 :(得分:2)

columns列表很可能少于4个元素,因此最后一行中的columns[3]正在提升IndexError。不知道line是什么,很难说。将最后一行设为此以获取一些调试信息:

try:
    output1.write('{:8}{:8}\n'.format(columns[0], columns[3])
except IndexError, e:
    print repr(line)
    # Alternatively
    #output1.write("Error: " + repr(line))
    raise

答案 1 :(得分:1)

像这样的事情的常见错误是一个以" \ n"结尾的文件。 寻找一个空的最后一行。