read specific line in csv file , python

后端 未结 2 974
春和景丽
春和景丽 2021-01-19 15:06

In an CSV file with python we can read all the file line by line or row by row , I want to read specific line (line number 24 example ) without reading all the

相关标签:
2条回答
  • 2021-01-19 15:38

    Alternatively you can leverage the nrows and skiprows argument in pandas

    line_number = 30
    pd.read_csv('big.csv.gz', sep = "\t", nrows = 1, skiprows = line_number - 1)
    

    remember skiprows can be a list so if you need the header use

    pd.read_csv('big.csv.gz', sep = "\t", nrows = 1, skiprows = list(range(1, line_number - 1)))
    
    0 讨论(0)
  • 2021-01-19 15:57

    You can use linecache.getline:

    linecache.getline(filename, lineno[, module_globals])

    Get line lineno from file named filename. This function will never raise an exception — it will return '' on errors (the terminating newline character will be included for lines that are found).

    import linecache
    
    
    line = linecache.getline("foo.csv",24)
    

    Or use the consume recipe from itertools to move the pointer:

    import collections
    from itertools import islice
    
    def consume(iterator, n):
        "Advance the iterator n-steps ahead. If n is none, consume entirely."
        # Use functions that consume iterators at C speed.
        if n is None:
            # feed the entire iterator into a zero-length deque
            collections.deque(iterator, maxlen=0)
        else:
            # advance to the empty slice starting at position n
            next(islice(iterator, n, n), None)
    
    with open("foo.csv") as f:
        consume(f,23)
        line = next(f)
    
    0 讨论(0)
提交回复
热议问题