尝试将一行写入CSV时发生Python错误:(IndexError:list index out of range)

2024-10-01 13:26:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着把一个CSV文件分成多个文件。如果我从命令行使用它,代码可以正常工作。在

我在运行Python csv_splitterFunction.pyC: \Users\xlViki\Desktop\Python\日记.py在命令中

import sys  

number_of_outfiles = 4  

if __name__ == "__main__":  
    k = []  
    for i in range(number_of_outfiles):  
        k.append(open(r'C:\Users\xlViki\Desktop\Python\Output_' + str(i) + '.csv','w'))  
    with open(sys.argv[1]) as inf:  
        for i, line in enumerate(inf):  
            if line[-1] == '\n': line = line[:-1]  
            if i == 0:  
                headers = line  
                [x.write(headers + '\n') for x in k]  
            else:
                k[i % number_of_outfiles].write(line + '\n')  
    [x.close() for x in k]  

但是,当我试图将代码转换为下面这样的函数并在Python shell中运行时(在IDLE中按F5键),我遇到了一个列表超出范围的错误

^{pr2}$

这是我收到的输出:

C:\Users\xlViki\Desktop\Python\Output_0
1
<_io.TextIOWrapper name='C:\\Users\\xlViki\\Desktop\\Python\\Output_0.csv' mode='w' encoding='cp1252'>
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    Main(r'C:\Users\xlViki\Desktop\Python\Journal.csv')
  File "C:\Users\xlViki\Desktop\Python\csv_splitterFunction.py", line 22, in Main
    k[i % number_of_outfiles].write(line + '\n')
IndexError: list index out of range

你能帮我把这个代码转换成函数吗?在


Tags: 文件ofcsv代码innumberforoutput
2条回答

错误消息告诉您,在第22行,k[i % number_of_outfiles].write(line + '\n')发生了列表索引超出范围异常。这一行将尝试访问k[0]、k[1]、k[2]和k[4],但在循环的第一次迭代中,您只将1个元素放入k中,因此只能访问k[0]。解决方法是在进入以with open(filepath) as inf:开头的循环之前,打开所有文件并将它们放入k中。 另外,您已经两次使用i作为变量,如果您想保持循环嵌套,您应该更改它们的一个名称,否则您可以取消with open(filepath) as inf:。在

似乎您需要从with open(filepath) as inf:开始取消所有内容的缩进。第一个文件正在打开,但是第二行试图在第二个文件打开之前写入它。在

相关问题 更多 >