在csv文件中启动一个特定的行

时间:2015-01-13 15:38:59

标签: python csv python-3.4

我有一个大文件,我想从我在for循环中结束的那一行开始。

def ip_to_land(whatIP, startline):

    with open("cord.csv") as csvfile:
    # 100640 total lines
    readCSV = csv.reader(csvfile, delimiter = ",")

    for row in readCSV:
        IP_LOW = IPAddress(row[0])
        IP_HIGH = IPAddress(row[1])
        Land = row[2]

        start_line += 1

        if IPAddress(whatIP)>=IP_LOW and IPAddress(whatIP)<=IP_HIGH:
            return Land, row[3], row[4], start_line
            readCSV.seek(start_line)
            break

这可能吗?

2 个答案:

答案 0 :(得分:2)

假设readCSV是一个可供阅读的文件,而不是csv.reader(不可搜索),您会寻找字节偏移,而不是偏移。

所以,请使用例如

start_line = readCSV.tell()

以后能够回到同一地点。

文件的tell方法返回您要读取的字节偏移量。正如https://docs.python.org/2.4/lib/bltin-file-objects.html上的文档所说,如果您使用的是Windows,则可能需要以模式rb(读取二进制文件)打开该文件,以确保tellseek正常工作根据需要(否则可能存在阻碍正常操作的行结束转换)。

答案 1 :(得分:0)

这可能会有所帮助。我假设readCSV是文件所有行的列表。

    readCSV= open('filename.CSV').readlines() #list of all the lines in file

    for row in range(len(readCSV)):

        if something:
            #your code
            break

    print readCSV[row+1]  

如果退出循环时row说33,则print调用将打印行列表中的下一行。