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()
Задачи для самостоятельного решения
-
Пользователь вводит целые числа, заканчивая ввод числом 0. Записать эти числа в файл c:\work\test.txt.
-
Вывести в консоль в одной строке целые числа, записанные в файле c:\work\test.txt.
-
Пользователь вводит 10 строк, в каждой из которых фамилия, имя и оценка ученика, разделенные пробелом. Записать эти строки в текстовый файл mylist.txt.
-
Вывести в консоль из файла mylist.txt строку, номер которой вводит пользователь. Сообщить, если строки с таким номером нет.
-
В файле mylist.txt записаны строки. В каждой строке фамилия, имя и оценка ученика класса, разделенные пробелами. Вывести среднюю оценку класса.
-
В файле записаны символы X, Y, Z. Подсчитать количество символов Y и Z, записанных в файле.