使用python解析输入csv文件以获得输出sqlfi

2024-05-12 22:32:22 发布

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

基本上,我在Python 3.2中要做的是读取包含3列的输入csv文件,然后创建一个sql输出文件,其中输入文件中每行的3个数据将作为插入查询中的参数:

我的代码如下:

import os  
import csv  

InFileName = r'path\test.csv'  
OutFileName = r'path\test.sql'  
NumCommas = 0  

File = open(InFileName)  
for line in File:  
    if line.count(',') > NumCommas:  
        NumCommas = line.count(',')  
File.seek(0)  

reader = csv.reader(File)  
OutFile = open(OutFileName, 'w')  
for rows in reader:  
    OutFile.write("insert into table_name values(",rows[0],", 2, to_date(",   rows[1],",'YYYY-MM-DD'), 1, 1, -1, 0, ",rows[2],", ",rows[2],", 0, 0, 0, sysdate, 0);" +   '\n')  

OutFile.close()  
File.close()  

我得到了一个错误:

list index out of range


Tags: 文件csvpathtestimportsqllineopen
2条回答

在您的rows in reader块中记录rows。文件的开头可能有一个空白。在

这意味着该行的rows数组将为空,rows[0]或{}位是否尝试访问该行不存在的列:

for rows in reader:
    print rows # check yourself before you wreck yourself

用你的代码

NumCommas = 0  

File = open(InFileName)  
for line in File:  
    if line.count(',') > NumCommas:  
        NumCommas = line.count(',')

确定并记住输入文件所有行中的一行中的最大逗号数。之后你甚至不用这些信息来验证你的输入。在

杰克已经指出了一点:验证你的输入:

^{pr2}$

你不需要第一个循环来计算逗号。一般来说,文件I/O是对任何计算应用程序的性能限制。如果你不需要的话,不要做两次。在

另外,一般来说,总是发布完整的错误消息。我相信Python给了您行号和代码行,这使得这里的人更容易提供帮助。在

相关问题 更多 >