AttributeError when trying to use seek() to get last row of csv file

前端 未结 2 704
孤独总比滥情好
孤独总比滥情好 2020-12-19 15:57

I am trying to return the last row from a csv file. I am modifying another function that I wrote previously that returns the last line from a text file. It seemed to work

2条回答
  •  醉梦人生
    2020-12-19 16:35

    csv reader not support seek, so you can get csv file last line as text file, then process last line as csv. In your code, if last line length > distance, then will get only part of last line.

    import os
    
    def get_last_line(fin):
        line_len = 80
        fin.seek(0, os.SEEK_END)
        file_size = fin.tell()
        while True:
            line_len = min(line_len * 2, file_size)
            fin.seek(-line_len, os.SEEK_END)
            lines = f.readlines()
            if len(lines) > 1 or line_len == file_size:
                return lines[-1]
    

    then read csv:

    import csv
    
    print ', '.join(csv.reader([last_line]).next())
    

提交回复
热议问题