Печать последних строк файла CSV - PullRequest
0 голосов
/ 06 июля 2018

Я хотел бы напечатать последние 13 строк CSV-файла, сохраненного как updated_quotes. Возвращает синтаксическую ошибку. Как я могу это исправить?

  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 голосов
/ 06 июля 2018

Ваша непосредственная проблема в том, что последняя строка в tail:

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

Держу пари, что у вас было print(deque(open(csv_file), n)) во время разработки, и вы хотели изменить его на return(deque(open(csv_file), n)).

Но здесь есть еще что-то не так. Метод tail никогда не вызывается. Если вы пойдете дальше, я думаю, вы обнаружите, что все, что использует ваш csv reader, должно быть в стороне от выражения 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)
0 голосов
/ 06 июля 2018

Вы должны открыть файл в функции 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))
...