插入sql表时从文本文件中跳过第一行

时间:2018-08-23 08:59:42

标签: python mysql

我有文本文件employee.txt,我将其插入到SQL表中,但是我得到的第一行与标头相同,后跟我的表值。我对python很陌生。如何删除表中的第一行是标题。

inpfile=open('C:/Users/chari/Documents/employee.txt','r')
while 1:
    line=inpfile.readline()
    if line=='':
           break
    serial_no,first_name,last_name,age,sex,city=line.split()
    stmt = ("""insert into employee(serial_no, first_name,last_name,age,sex,city)""" +"values"
        +str((serial_no,first_name,last_name,age,sex,city)))
    cursor.execute(stmt)

3 个答案:

答案 0 :(得分:0)

这可能会有所帮助。使用with读取文件,然后使用next()跳过第一行。

例如:

with open('C:/Users/chari/Documents/employee.txt') as infile:
    next(infile)   #Skip first line. 
    for line in infile:
        serial_no,first_name,last_name,age,sex,city=line.strip().split()
        stmt = ("""insert into employee(serial_no, first_name,last_name,age,sex,city)""" +"values"
            +str((serial_no,first_name,last_name,age,sex,city)))
        cursor.execute(stmt)

答案 1 :(得分:0)

您可以使用for循环遍历文件的每一行,但是在文件上调用next()将跳过第一个,而for循环将从第二个继续:

with open('file.txt') as f:
    f = iter(f)
    first_line = next(f)
    for line in f:
        # .... do stuff with each line...

答案 2 :(得分:0)

您可以执行类似 this 的操作:

with open('C:/Users/chari/Documents/employee.txt') as f:
    next(f)
    for line in f:
        serial_no,first_name,last_name,age,sex,city=line.strip().split()
        stmt = ("""insert into employee(serial_no, first_name,last_name,age,sex,city)"""     +"values"+str((serial_no,first_name,last_name,age,sex,city)))
        cursor.execute(stmt)

如果您需要第一行用于其他目的,那么打开文件后可以执行 this 之类的操作

first_line = next(f)

或者您可以通过这种方式打开文件,将整个文件存储到变量中。此解决方案可用于读取任何行,因此对我来说感觉更好。但是如果您使用的是非常大的文件,那将会很麻烦:

f = open('C:/Users/chari/Documents/employee.txt','r')
lines = f.readlines()[1:]
f.close()