2016-06-18 4 views
-2

Я пытаюсь напечатать несколько строк из текстового файла на python, где он выводится. Мой текущий код:Как напечатать несколько строк из файла python

f = open("sample.txt", "r").readlines()[2 ,3] 
print(f) 

Однако я получаю сообщение об ошибке:

TypeError: список индексов должны быть целыми, а не кортеж

Есть в любом случае фиксации этого или печати нескольких линий из файла без их распечатки отдельно?

+0

Вы не можете делать '[2, 3]' одновременно. Сделайте 'f = open (" sample.txt ", 'r'). Readlines(); print (f [2], f [3]) ' –

+0

Вы можете сделать' ... [2: 4] ', если вам нужны элементы списка 2 и 3. – khelwood

+0

@JayPatel, как бы я это сделал? –

ответ

0

Вы пытаетесь передать кортеж к операции [...] подписки; 2 ,3 является кортежем из двух элементов:

>>> 2 ,3 
(2, 3) 

У вас есть несколько вариантов здесь:

  • Используйте нарезку взять подсписок из всех линий. [2:4] ломтики от 3-й линии и включает в себя 4-ю строку:

    f = open("sample.txt", "r").readlines()[2:4] 
    
  • магазин линий и распечатывать отдельные индексы, один на один:

    f = open("sample.txt", "r").readlines() 
    print f[2].rstrip() 
    print f[3].rstrip() 
    

    Я использовал str.rstrip(), чтобы удалить символ новой строки, которые по-прежнему часть перед печатью.

  • Используйте itertools.islice() и используйте объект-файл как итерабельную; это наиболее эффективный метод, поскольку никакие линии не должны быть сохранены в памяти больше, чем просто печатной работы:

    from itertools import islice 
    
    with open("sample.txt", "r") as f: 
        for line in islice(f, 2, 4): 
         print line.rstrip() 
    

    Я также использовал объект файла в качестве менеджера контекста, чтобы убедиться, что он снова закрыта, как только with блок сделан.

+0

Это печатает только один раз, если хотите использовать это с большим файлом –

+0

@MansurAli: not конечно, что вы просите. 'islice()' отлично подходит для большого файла. –

0

Назначьте весь список строк переменной, а затем распечатайте линии 2 и 3 отдельно.

with open("sample.txt", "r") as fin: 
    lines = fin.readlines() 
print(lines[2]) 
print(lines[3]) 
+0

Это то, чего я пытаюсь избежать, но спасибо в любом случае :) –

+0

& Не волнуйтесь, я получил ответ от Jay Patel –

Смежные вопросы