Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 2016

Шаблон программы чтения файла

Для практикума 8

Использовать шаблон не обязательно — приводим его для удобства. Если используете, надо понимать все его элементы, тогда вам легко будет отредактировать его под ту или иную задачу.

... 
 (предварительные действия)
...
indata = open("filename.txt", "r")
line = indata.readline()
while len(line) > 0:
    sline = line.strip()
    if len(sline) > 0:
        ...
        (действия с sline)
        ...
    line = indata.readline()
indata.close()
...

Объяснение

Метод readline выдаёт пустую строку (длины 0), только если файл уже весь прочитан. Поэтому цикл идёт пока длина строки положительна.

В файле могут быть пустые строки. Когда программа доходит то такой строки, метод readline возвращает строку, состоящую из одного лишь признака конца строки. Чтобы ваша программа не сваливалась при попытке добыть из такой строки информацию, которой там нет, мы "раздеваем" строку (метод strip) и прежде чем с ней работать, проверяем, что после раздевания что-то ещё осталось.

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

from sys import argv

counter = 0
indata = open(argv[1], "r")
line = indata.readline()
while len(line) > 0:
    sline = line.strip()
    if len(sline) > 0:
        counter = counter + 1
    line = indata.readline()
indata.close()

print "File", argv[1], "contains", counter, "non-empty lines"