我有一个分配给函数定义的输入和输出变量来从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文件确实生成但是没有数据列。发生了什么事?
答案 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"结尾的文件。 寻找一个空的最后一行。