2015-12-25 2 views
-2

Независимо от того, насколько основной является эта задача, я изо всех сил пытаюсь прочитать определенную строку файла в Python.Чтение определенной строки в файле

Я создаю систему цитат для чтения и записи файлов, является ключевой частью. В коде строка, которая должна быть прочитана, должна соответствовать значению места, предопределенному переменной Position. Затем я хочу, чтобы строка сохранялась в переменной.

Я пытаюсь найти эффективный способ, которым вам не нужно проходить весь файл. Я попытался использовать file.readline(Position), но он продолжает показывать 0. Я включил части своего кода для контекста.

value = self.option.get() 
Position= int(array.index(value)) 
print(value) #test 
print(Position) #test 

file= open("Height_File.txt", "r") 
Height= file.readline(Position) 
print(Height)#test 
file.close() 
+0

Вы пытаетесь взять spesific линию справа файла? Или вы пытаетесь взять ** часть ** следующей строки? – Rockybilly

+0

Собираетесь ли вы постоянно получать доступ к разным строкам? –

ответ

3

Если вы хотите определенную строку из файла, вы можете использовать linecache.getline функцию linecache модуля.

Демо:

Предположим, что ваш файл называется testfile.txt и имеет содержание

line1 
line2 
line3 

Тогда вы сможете получить доступ line2 с

>>> import linecache 
>>> linecache.getline('testfile.txt', 2) 
'line2\n' 
+1

@PadraicCunningham Я стою исправленный, спасибо. – timgeb

-1

Используйте его, как это.

Height = file.readlines()[position] 

Это дает строку с позиции вы вводите (начиная с 0)

+0

О, спасибо. Я не понимал, что он спрашивает о python3. – Rockybilly

0

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

def read_line(path, line_number, encoding=None): 
    with open(path, 'r', encoding=encoding) as f: 
     for index, line in enumerate(f): 
      if index == line_number: 
       yield line.strip('\r\n') 

Обратите внимание, чтобы позвонить, вы могли бы сделать: следующий (read_line (путь, line_number))

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