Python readline () на Mac

1

Новый для python и пытается изучить канаты ввода/вывода файлов.

Работа с вытягиванием линий из большого файла (2 миллиона строк) в этом формате:

56fr4
4543d
4343d
hirh3

Я читал, что readline() лучше, потому что он не вытаскивает весь файл в память. Но когда я пытаюсь прочитать документацию на нем, похоже, это только Unix? И я нахожусь на Mac.

Могу ли я использовать readline на Mac без загрузки всего файла в память? Какой синтаксис должен был бы просто читать номер 3 в файле? Примеры в документах немного над моей головой.

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

Вот функция для возврата кода:

def getCode(i):
    with open("test.txt") as file:
        for index, line in enumerate(f):
            if index == i:
                code = # what does it equal?
                break
    return code
  • 1
    Readline - это библиотека для работы с клавиатурой терминала. Это не имеет ничего общего с чтением файлов.
  • 1
    @DanielRoseman Смотрите мой комментарий ниже относительно вашего запутанного file.readline () и модуля readline.
Теги:
macos
file-io

2 ответа

11
Лучший ответ

Вам не нужно readline:

with open("data.txt") as file:
    for line in file:
        # do stuff with line

Это будет читать весь файл по строкам, но не все сразу (так что вам не нужна вся память). Если вы хотите прервать чтение файла, потому что вы нашли нужную строку, используйте break для завершения цикла. Если вы знаете индекс нужной строки, используйте это:

with open("data.txt") as file:
    for index, line in enumerate(file):
        if index == 2: # looking for third line (0-based indexes)
            # do stuff with this line
            break # no need to go on
  • 0
    Как бы я вернул третью строку? Просто хочу убедиться, что я понимаю синтаксис ..
  • 0
    @ some1: обновил мой ответ, чтобы показать, как найти конкретную строку по номеру.
Показать ещё 6 комментариев
0

+1 @SpaceC0wb0y

Вы также можете сделать:

f = open('filepath')
f.readline() # first line - let it pass
f.readline() # second line - let it pass
third_line = f.readline()
f.close()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню