Как вы читаете конкретную строку текстового файла в Python? - PullRequest
4 голосов
/ 23 сентября 2011

У меня проблемы с чтением всей конкретной строки текстового файла с использованием Python.В настоящее время у меня есть это:

load_profile = open('users/file.txt', "r")
read_it = load_profile.readline(1)
print read_it

Конечно, это будет просто прочитать один байт первой строки, что не то, что я хочу.Я также попробовал Google, но ничего не нашел.

Ответы [ 4 ]

14 голосов
/ 23 сентября 2011

Каковы условия этой линии?Это по определенному показателю?Содержит ли она определенную строку?Соответствует ли оно регулярному выражению?

Этот код будет соответствовать одной строке файла на основе строки:

load_profile = open('users/file.txt', "r")
read_it = load_profile.read()
myLine = ""
for line in read_it.splitlines():
    if line == "This is the line I am looking for":
        myLine = line
        break
print myLine

И это даст вам первую строку файла (естьнесколько других способов сделать это):

load_profile = open('users/file.txt', "r")
read_it = load_profile.read().splitlines()[0]
print read_it

Или:

load_profile = open('users/file.txt', "r")
read_it = load_profile.readline()
print read_it

Извлечь Объекты файлов Python Документы

file.readline ([размер])

Считывание всей строки из файла.Конечный символ новой строки сохраняется в строке (но может отсутствовать, когда файл заканчивается неполной строкой).[6] Если аргумент size присутствует и неотрицателен, это максимальный счетчик байтов (включая завершающий перевод строки), и может быть возвращена неполная строка.Если размер не равен 0, пустая строка возвращается только при немедленном обнаружении EOF.

Примечание. В отличие от stgets fgets (), возвращаемая строка содержит нулевые символы ('\ 0'), если они встречаются во входных данных.

file.readlines ([sizehint])

Чтение до EOF с использованием readline () и возврат списка, содержащего строки, прочитанные таким образом.Если присутствует необязательный аргумент sizehint, вместо чтения до EOF читаются целые строки, составляющие приблизительно байты sizehint (возможно, после округления до внутреннего размера буфера).Объекты, реализующие файловый интерфейс, могут игнорировать sizehint, если он не может быть реализован или не может быть реализован эффективно.


Редактировать:

Ответ на ваш комментарий Noah:

load_profile = open('users/file.txt', "r")
read_it = load_profile.read()
myLines = []
for line in read_it.splitlines():
    # if line.startswith("Start of line..."):
    # if line.endswith("...line End."):
    # if line.find("SUBSTRING") > -1:
    if line == "This is the line I am looking for":
        myLines.append(line)
print myLines
2 голосов
/ 02 июня 2015

Вы можете использовать встроенный модуль Python linecache

  import linecache
  line = linecache.getline(filepath,linenumber)
2 голосов
/ 23 сентября 2011
load_profile.readline(1)

специально указывает на ограничение в 1 байт. это не значит 1 линия. Попробуйте

read_it = load_profile.readline()
1 голос
/ 23 сентября 2011
def readline_number_x(file,x):
    for index,line in enumerate(iter(file)):
        if index+1 == x: return line

    return None

f = open('filename')
x = 3
line_number_x = readline_number_x(f,x) #This will return the third line
...