Задачи

Python. Файлы

Прежде чем обращаться к файлу, необходимо его открыть, что можно сделать функцией open:

f = open('c:\\work\\test.txt', 'rt')

Этой записью переменной f присваивается объект - текстовый файл, который с именем 'test.txt' расположен на c диске в каталоге work и который открывается для чтения. Режим, какой мы указали во втором аргументе, определяет какие операции можно иcпользовать с файлом f. Если бы указали режим 'wt', то открыли бы текстовый файл для записи.

В режиме чтения из текстового файла можно прочитать информацию различными функциями:

f = open('c:\\work\\test.txt')
s = f.read()

В этом примере переменной s присваивается строка, содержащая весь текст из файла.

Режимы открытия файла 'r' - для чтения и 't' - текстовый файл, являются режимами по умолчанию, т.е. их можно не указывать. Для открытия текстового файла для записи достаточно указать 'w'.

Для посимвольной обработки файла можно применить следующую конструкцию:

count = 0
f = open('c:\\work\\test.txt')
for symbol in f.read():
    if symbol == 'Z':
        count += 1
f.close()
print(count)

В этом примере подсчитывается количество символов Z, встреченных в файле. Обратите внимание, после окончания операций с файлом, необходимо его закрыть методом close.

Если в файле записаны строки, то лучше использовать:

stings = f.readlines()

В этом случае strings будет присвоен список строк, прочитанных из файла.

Для построчного считывания используется функция readline. Например, в первой строке файла записано количество последующих строк с целыми числами. Необходимо подсчитать и вывести их сумму:

summ = 0
f = open('c:\\work\\test.txt')
N = int(f.readline())
for i in range(N):
    summ += int(f.readline())
f.close()
print(summ)

Каждая строка в операциях чтения и записи содержит символ перевода строки '\n', поэтому чтобы записать в текстовый файл, например, целые числа по одному в строке необходимо добавить этот символ:

a = [5, 3, 2, 5, 8, 4]
f = open('C:\\work\\test.txt', 'w')
for i in a:
    f.write(str(i) + '\n')
f.close()

В этом примере целые числа из списка преобразуются в строку, к которой добавляется символ перевода строки и затем строка записывается в файл.

Также это можно cделать и функцией writelines:

a = [5, 3, 2, 5, 8, 4]
f = open('C:\\work\\test.txt', 'w')
f.writelines(str(i) + '\n' for i in a)
f.close()

Например, в файле записаны слова, по одному в каждой строке. Необходимо прочитать из файла и записать строки в список. Применяем генератор списка, в котором для каждой строки из файла выполняется функция strip, удаляющая символ перевода строки:

f = open('C:\\work\\test.txt')
a = [line.strip() for line in f.readlines()]
print(a)
f.close()
 

Задачи для самостоятельного решения