Перейти к конкретной строке в Python? - PullRequest
37 голосов
/ 15 марта 2010

Я хочу перейти к строке 34 в текстовом файле и прочитать ее. Как бы вы сделали это в Python?

Ответы [ 7 ]

89 голосов
/ 15 марта 2010

Использовать модуль linecache стандартной библиотеки Python:

line = linecache.getline(thefilename, 33)

должен делать именно то, что вы хотите. Вам даже не нужно открывать файл - linecache все сделает за вас!

5 голосов
/ 08 ноября 2011

Этот код откроет файл, прочитает строку и распечатает ее.

# Open and read file into buffer
f = open(file,"r")
lines = f.readlines()

# If we need to read line 33, and assign it to some variable
x = lines[33]
print(x)
3 голосов
/ 15 марта 2010

Решение, которое не будет читать больше файла, чем необходимо, это

from itertools import islice
line_number = 34

with open(filename) as f:
    # Adjust index since Python/islice indexes from 0 and the first 
    # line of a file is line 1
    line = next(islice(f, line_number - 1, line_number))

Очень простое решение -

line_number = 34

with open(filename) as f:
    f.readlines()[line_number - 1]
3 голосов
/ 15 марта 2010

Есть два способа:

  1. Чтение файла, строка за строкой, остановка, когда вы дойдете до нужной строки
  2. Использование f.readlines(), при котором будет прочитано всефайл в память и вернуть его в виде списка строк, а затем извлечь 34-й элемент из этого списка.

Решение 1

Преимущество: Вы сохраняете в памяти только определенныенужная строка.

код:

for i in xrange(34):
    line = f.readline();
# when you get here, line will be the 34th line, or None, if there wasn't
# enough lines in the file

Решение 2

Преимущество: намного меньше кода
Недостаток: Считывает весь файл в память
Проблема:Сбой, если в списке присутствует менее 34 элементов, требуется обработка ошибок

line = f.readlines()[33]
2 голосов
/ 15 марта 2010

Вы можете просто прочитать все строки и проиндексировать строку после.

line = open('filename').readlines()[33]
1 голос
/ 10 июля 2017

Я написал об этом и не получил помощи, поэтому взял дело в свои руки.

Здесь нет сложного кода.

import linecache
#Simply just importing the linecache function to read our line of choosing

number = int(input("Enter a number from 1-10 for a random quote "))
#Asks the user for which number they would like to read(not necessary) 

lines = linecache.getline("Quotes.txt", number)
#Create a new variable in order to grab the specific line, the variable 
#integer can be replaced by any integer of your choosing.

print(lines)
#This will print the line of your choosing.

Если вы выполняете это в python, убедитесь, что оба файла (.py) и (.txt) находятся в одном месте, иначе python не сможет получить это, если вы не укажете местоположение файла. НАПРИМЕР.

linecache.getline("C:/Directory/Folder/Quotes.txt

Используется, когда файл находится в другой папке, чем используемый вами файл .py.

Надеюсь, это поможет!

1 голос
/ 15 марта 2010
for linenum,line in enumerate(open("file")):
    if linenum+1==34: print line.rstrip()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...