打印CSV文件的最后几行

时间:2018-07-05 21:23:23

标签: python csv stocks

我想打印另存为updated_quotes的csv文件的最后13行。它返回语法错误。我怎样才能解决这个问题?

  import csv
from collections import deque

with open('updated_quotes', 'r') as csv_file:
    csv_reader = csv.reader(csv_file)


def tail(csv_file, n=13):
    'Return the last n lines of a file'
    print(return deque(open(csv_file), n))

2 个答案:

答案 0 :(得分:1)

您应该在tail函数中打开文件,并将文件对象传递给csv.reader

import csv
from collections import deque

def tail(csv_file, n=13):
    'Return the last n lines of a file'
     with open(csv_file, 'r') as f:
         csv_reader = csv.reader(f)
         return deque(csv_reader, n) 

print (tail("updated_quotes", n=13))

答案 1 :(得分:0)

您的直接问题是tail中的最后一行是:

print(return deque(open(csv_file), n))

我敢打赌,您在开发时会使用print(deque(open(csv_file), n)),并打算将其编辑为return(deque(open(csv_file), n))

但是这里还有更多错误。永远不会调用tail方法。继续进行下去,我想您会发现,使用csv阅读器的所有内容都必须位于with语句的旁边。

尝试作为入门:

import csv
from collections import deque

def tail(csv_file_name, n=13):
    'Return the last n lines of a file'
    with open(csv_file_name, 'r') as csv_file:
        csv_reader = csv.reader(csv_file)
        return(deque(csv_reader, n))

last_13 = tail('updated_quotes')
print(last_13)